以下程序會創建生成隨機數的線程。使用監視器類同步Java中的線程
我如何更改Monitor
類所以它將控制線程的打印方式將按每個線程ID的順序打印?
解決方案如「調用run
方法而不是start
」不被接受。
給出的歸類是:
public class Main {
public static void main(String[] args) {
Monitor mon = new Monitor();
for (int i = 0; i < 20; i++)
new T(i, mon).start();
System.out.println("Finished");
}
}
public class Monitor {
public void print(int id, int num) {
System.out.println("id=" + id + " num=" + num);
}
}
public class T extends Thread {
private int id;
private Monitor mon;
public T(int i, Monitor m) {
id = i;
mon = m;
}
private int calc() {
int num = 0;
for (int i = 0; i < 10; i++)
num = num + (int) (Math.random() * 10);
return num;
}
public void run() {
int num = calc();
mon.print(id, num);
}
}
什麼問題? –
看起來像作業 – kervin
我同意,但我認爲這很有趣,主要是因爲只有'Monitor'可以改變的限制。使其同步或應用任何其他類型的鎖定可能更有可能按順序打印線程ID,但不能保證它。 –