相关疑难解决方法(0)

364
推荐指数
8
解决办法
51万
查看次数

线程无法停止

为什么我的线程无法停止???

 class Threadz {

    class runP implements Runnable {
        int num;
        private volatile boolean exit = false;
        Thread t;
        public runP() {
            t = new Thread(this, "T1");
            t.start();
        }

        @Override
        public void run() {
            while(!exit) {
                System.out.println(t.currentThread().getName()+": "+num);
                num++;  
                try {
                    t.sleep(200);   
                } catch(InterruptedException e) {}
            }
        }
        public void stop() {
            exit = true;
        }
    }

    public static void main(String[] a) {
        runP rp = new Threadz().new runP();
        if(rp.num == 1) {rp.stop();}
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我使用rp.num == 0,则可以立即停止线程.但是,为什么当我更改rp.num == x(x是大于0的任何数字)时,线程无法停止?请帮我解决这个问题...感谢任何帮助.

java multithreading

5
推荐指数
1
解决办法
102
查看次数

如何在java中加入一个线程与其他线程?

我有一个主线程启动10个其他线程.我希望只有在所有其他线程停止后才能完成主线程.所以我应该在开始之前或之后调用其他10个线程上的join().例如:

// in the main() method of Main thread
Thread [] threads = new Thread[10];
for(int i = 0; i < 10; i++) {
    // ParserThread() is a runnable thread
    threads[i] = new Thread(new ParserThread());
    threads[i].join();
    threads[i].start();
}
System.out.println("All threads have been finished"); // line no. 9
Run Code Online (Sandbox Code Playgroud)
  1. 因此,在上面的例子中,我应该在start()之前或start()之后调用join().
  2. 控件是否会返回到行号.只有在所有线程完成后才能使用9.
  3. 当任何线程的run方法被执行时,该线程将死亡或保持活动状态.如果可以的话,当run方法完成时如何处理所有线程意味着当控制返回到行号时.9

java multithreading

3
推荐指数
3
解决办法
2637
查看次数

标签 统计

java ×3

multithreading ×3

interrupt ×1

join ×1