如果其中一个线程失败了!那第二次会不会因为资源被占用以后都无法复制,或者因为线程一直等待或者死锁!
另外除了上面的问题.我写的有没有什么其他问题啊?????
public class cpFils { public boolean push() {
boolean reValue = false; try {
String[] toDirs = { "dir1", "dir2", "dir3" };
cpStruct tmpCps = new cpStruct();
for (String _dir : toDirs) {
tmpCps = new cpStruct();
tmpCps.setToDir(_dir);
new Thread(new ThreadCp(tmpCps)).start();
}
} catch (Exception e) {
// log
}
return reValue;
} public static void main(String arg[]) { new cpFils().push();
System.out.println("end");
}
}class ThreadCp implements Runnable {
public cpStruct cps; public ThreadCp() {
} public ThreadCp(cpStruct _cps) {
this.cps = _cps;
} public void run() {
try { String cpCmd = "copy " + cps.getCpFiles()[0] + " " + cps.getToDir();
Runtime.getRuntime().exec(" cmd /c " + cpCmd);
} catch (Exception e) {
// log
}
}}class cpStruct {
// 待Copy文件列表(目录+文件)
private final String[] cpFiles = { "path/file1", "path/file2" }; // Copy到的目标路径
private String toDir; public String[] getCpFiles() {
return cpFiles;
} public String getToDir() {
return toDir;
} public void setToDir(String toDir) {
this.toDir = toDir;
}
}

解决方案 »

  1.   

    cpStruct tmpCps = new cpStruct();这个new是不是多余的?
      

  2.   

    linux比较简单,可以写shell,然后加在crontab中,定时操作
      

  3.   

    我担心.我thread1复制文件file1的时候失败.死在那里或者其他什么的然后过了5分钟以后,又一个thread开始复制file1到目标路径了.然后由于刚才哪个filed1的资源被占用僵死在那里导致出错!
      

  4.   

    担心他死锁就加个Thread().join(millis)
      

  5.   

    复制文件只会对文件加只读的锁 一个线程失败 不会影响别的线程 线程优先级一样的话 而且没有互相请求对方占有的资源 就不会死锁 你的代码看不出什么问题来 还是实践来检验一下------------------------------------------------------------------------------------
    加只读锁,那线程失败...僵死..文件一直都只读.....5分钟后另外一个线程又copy的这个文件得时候由于有只读
    锁所以无法覆盖............会吗?
      

  6.   

    复制文件只会对文件加只读的锁 一个线程失败 不会影响别的线程 线程优先级一样的话 而且没有互相请求对方占有的资源 就不会死锁 你的代码看不出什么问题来 还是实践来检验一下 ------------------------------------------------------------------------------------ 
    加只读锁,那线程失败...僵死..文件一直都只读.....5分钟后另外一个线程又copy的这个文件得时候由于有只读 
    锁所以无法覆盖............会吗?--------------------------------------------------------------------------------------------
    这种情况不是很容易测试出来!现在先想知道理论上是否有这种可能?