如何调整给定 k 线程之间的公平性以生成一些输出?
换句话说,假设我们有 k 个线程打印“1”,n 个线程打印“2”。
现在我们如何在线程之间设置公平性,以便每个线程打印(例如“1”)与其他(k - 1)打印(例如“1”)一样多。对于 n 线程打印“2”也是如此。
问问题
143 次
2 回答
1
在创建线程之前,创建一个空信号量数组[0..numThreads-1],每个要创建的线程一个。在创建时向每个线程发送一个递增信号量索引 0..numThreads-1 的信号。
在线程函数中,让它等待它的信号量[index],然后打印一些东西,然后发出信号[(index+1) mod numThreads] 信号量,然后循环循环以再次等待信号量[index]。
一旦你这样做了,什么都不应该发生。
在任何地方投入一个信号量单元。
于 2013-08-07T17:40:36.763 回答
0
好吧,我明白了一点,如果你将这个数字发送给他们的构造函数,你可以让一个线程打印一个数字。例如:
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();
}
}
}
您应该为 Thread printing 2 重复类似的表格
于 2013-08-07T16:38:59.253 回答