日期:2014-05-20  浏览次数:20767 次

急~!java 主线程和子线程的问题,怎么让子线程永远不断,直到主线程退出
情况是这样的---程序启动时,主线程和子线程两头跑,子线程是去查找文件,而且要不间断的去查找,直到主线程退出了,它就自然也退出。可是现在的问题是,启动时,子线程只是跑了一次,查了一次就不动了......我该怎么写,怎么判断主程序不退出时,子线程就一直跑。。。各位帮帮忙

------解决方案--------------------
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)

------解决方案--------------------
探讨

Java code
setDaemon(true)

+
Java code
while(true)

------解决方案--------------------
楼上各位也给出,正解
试下吧
主线程退出子线程跟着退出,
setDaemon(true);//就是这句话就 可以了 守护线程,又叫精灵线程吧