如何调整给定k个线程之间的公平性以生成一些输出?
换句话说,想象一下,我们有k个线程打印“1”和n个线程打印“2”。
现在我们如何才能在线程之间建立公平性,使得每个线程打印(例如“1”)与其他(k-1)打印(例如“1”)一样多,而对于n个线程打印“2”也是如此。调整多线程公平性
调整多线程公平性
回答
好吧,我明白一点,你可以让一个线程打印一个数字,如果你发送这个数字给他们的构造函数。 例如:
public class MyThread extends Thread
{
int number = 0;
public MyThread(int number) {
this.number = number;
}
@Override
public void run()
{
while(true) {
System.out.println(this.number);
this.sleep(1000);//control exception
}
}
}
然后在你的主
public class Main() {
public static void main(String[] args) {
int k = 10
for(int i = 0; i < k; k++) {
MyThread mt = new MyThread(1);
mt.start();
mt.join();
}
}
}
你应该重复的主题打印2
类似的形式在创建线程,创建一个数组[0..numThreads -1]的空信号量,一个用于你要创建的每个线程。在其创建时向每个线程发送递增信号量索引0..numThreads-1。在线程函数中,让它在其信号[index]上等待,然后打印一些内容,然后发信号给[(index + 1)mod numThreads]信号量,然后循环再次等待信号量[index]。
一旦你做完了,什么都不应该发生。
扔在一个信号单位,在任何地方。
你能解释一下吗? – user2625638
它实际上在线程周围传递了一个“打印令牌”。当一个线程打印了一些东西时,它将令牌传递给下一个,并以循环方式继续。 –
我只想知道在哪里等待()以及在哪里通知线程来处理此问题。 – user2625638
- 1. 调度线程时JVM的公平性
- 2. “公平”整数平均
- 3. SynchronousQueue公平性
- 4. Hashset多线程保持完整性?
- 5. C++调整库以实现多线程
- 6. Akka线程调整
- 7. 公平性保证FIFO调度?
- 8. Windows线程调度器是不公平的?
- 9. POSIX线程和公平(信号量)
- 10. 如何针对单线程/多线程调整此设置?
- 11. 多线程。如何平等地分享公共资源?
- 12. C++跨平台多线程?
- 13. 多线程平脚本
- 14. 整数线性编程
- 15. 多线程性能
- 16. Java - 平衡ThreadPoolExecutor公平地给线程并行请求
- 17. 的iOS:整理多线程
- 18. 调试多线程程序
- 19. 调试多线程程序
- 20. 调试多线程程序
- 21. hadoop中的公平调度
- 22. 线性布局调整无法设置
- 23. 调整水平ezcontourf()
- 24. 多线程和“公正泄漏”警告
- 25. IWebBrowser2和多线程的公寓?
- 26. 超级线性加速缓存效果 - 不公平比较?
- 27. 多线程:地图性能
- 28. 多线程性能提升
- 29. Java多线程可见性?
- 30. 多线程性能问题
我想我必须处理它的机智等待和通知方法,但我不知道如何? – user2625638