请教多线程问题

lovejianglan 2009-09-12 01:25:02
package com.test;

public class TestThread extends Thread {
private static String parm = "";
public void run() {
try
{
for(int i=0;i<5;i++){

PrintThread thread = new PrintThread();
thread.setValue(String.valueOf(parm+"-"+i));
thread.start();

thread.sleep(1000);// 主线程挂起1秒
}
}catch (InterruptedException e)
{
System.out.println(parm + " error");
Thread.interrupted();
return;
} finally{

}



}

public static void main(String[] args) {
parm = args[0];
TestThread test = new TestThread();
test.start();
}
}




package com.test;

import java.util.ArrayList;
import java.util.List;

public class PrintThread extends Thread {
public String parm = "";
public void run(){
if(parm.equals("aa-2")){
List list = new ArrayList();
list.get(parm.indexOf("bb"));
}
System.out.println(parm + ":"+System.currentTimeMillis());
}

public void setValue(String parm){
this.parm = parm;
}


}

TestThread也是多线程程序,可能有多个用户同时启动。然后启动多个PrintThread线程进行写文件操作。现在我有个问题,当其中一个线程失败后,我怎么中断另外4个可能还在运行中的PrintThread线程呢?或者重新启动出错的那个线程。

还有个问题怎么判断TestThread 中所有5个线程都正常执行完毕呢,因为5个线程执行时间差距可能还挺大。如果有任何一个线程失败,我需要删除整个出错目录。需要结束所有在写文件的线程。
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveofmylife 2009-09-12
  • 打赏
  • 举报
回复
Thread.interrupted(); 这个只是判断当前线程是否被中断,并将中断标志位置为false
LZ可以试一下volatile或者booleanLock完成
lovejianglan 2009-09-12
  • 打赏
  • 举报
回复
没分了,不好意思

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧