情况是这样的---程序启动时,主线程和子线程两头跑,子线程是去查找文件,而且要不间断的去查找,直到主线程退出了,它就自然也退出。可是现在的问题是,启动时,子线程只是跑了一次,查了一次就不动了......我该怎么写,怎么判断主程序不退出时,子线程就一直跑。。。各位帮帮忙
------解决方案--------------------
where(true)
------解决方案--------------------
1 子线程写个死循环,用标志判断是否退出
while(!stop){
}
2 在主线程要退出时,如果有要求子线程必须处理一些事情,可以调用子线程的 setStop(true);
------解决方案--------------------
- Java code
class ChildThread implements Runnable{ public static boolean stop=false; static int count = 0; public ChildThread() { } public void run() { while(!stop) { // 查找 search(); count++; } } // 查找 private void search() { System.out.println("子线程-查找"); }}public class xingfuweiyu implements Runnable{ static ChildThread c=null; public static void main(String[] args) { // 调用主线程 xingfuweiyu m=new xingfuweiyu(); new Thread(m).start(); } public void run() { // 做些事 System.out.println("主线程"); // 调用子线程 c=new ChildThread(); new Thread(c).start(); try { Thread.sleep(3000); } catch (Exception e) { } ChildThread.stop = true; System.out.println("子线程-停止了,执行"+c.count+"次"); }}
------解决方案--------------------
- Java code
setDaemon(true)
------解决方案--------------------
------解决方案--------------------
楼上各位也给出,正解
试下吧
主线程退出子线程跟着退出,
setDaemon(true);//就是这句话就 可以了 守护线程,又叫精灵线程吧