gpt4 book ai didi

java - 当某些线程执行其任务时,阻止特定线程参与线程调度程序

转载 作者:行者123 更新时间:2023-12-02 06:37:25 24 4
gpt4 key购买 nike

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

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

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() 方法,并且还在其他线程之间进行切换。
如果您需要相关说明或信息,请告诉我。

最佳答案

试试这个。

 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();

关于java - 当某些线程执行其任务时,阻止特定线程参与线程调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19490932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com