我只想像往常一样运行一些线程,我不关心它们如何以及何时相互切换。但是当其他线程正在运行时,还有一个不应该参与的最后一个线程。
我已经通过将低优先级设置为最后一个线程进行了尝试,但它不起作用并且它在更高优先级的线程之间切换。
我得到了“一点点”的解决方案,这与下面的程序很接近,但不完全是我想要做的。
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() 方法并在其他线程之间进行切换。
让我知道您是否需要对此进行澄清或信息。