0

我只想像往常一样运行一些线程,我不关心它们如何以及何时相互切换。但是当其他线程正在运行时,还有一个不应该参与的最后一个线程。
我已经通过将低优先级设置为最后一个线程进行了尝试,但它不起作用并且它在更高优先级的线程之间切换。

我得到了“一点点”的解决方案,这与下面的程序很接近,但不完全是我想要做的。

class ThreadDemo extends Thread {
static long value=0;
int no;
boolean flag;
public ThreadDemo(int no,boolean flag) {
    this.no=no;
    this.flag=flag;
}

public void run() {
    int i=0; 
    boolean tempf=true;
        while(tempf) {
        if(flag == true || value >= 30) {
            while(i<10) {
                try{sleep(100);} catch(Exception e) {}
                System.out.println("Thread # "+no+" is "+i);
                i++;
                value++;
            }
            tempf=false;
        }
    }
}

}

然后像这样在主类中调用它

    ThreadDemo th1 = new ThreadDemo(1,true);
    ThreadDemo th2 = new ThreadDemo(2,true);
    ThreadDemo th3 = new ThreadDemo(3,true);
    ThreadDemo th4 = new ThreadDemo(4,false);  

    th1.start();
    th2.start();
    th3.start();
    th4.start();

在这里,我想在完成所有三个线程后执行 th4 的 run() 方法。但它实际上调用了 run() 方法并在其他线程之间进行切换。
让我知道您是否需要对此进行澄清或信息。

4

1 回答 1

2

尝试这个。

 ThreadDemo th1 = new ThreadDemo(1,true);
    ThreadDemo th2 = new ThreadDemo(2,true);
    ThreadDemo th3 = new ThreadDemo(3,true);
    ThreadDemo th4 = new ThreadDemo(4,true);  

    th1.start();
    th2.start();
    th3.start();
th1.join();
th2.join();
th3.join();
    th4.start();
于 2013-10-21T10:08:41.343 回答