1
我無法找到解決此問題的方法。我在某個時候搞亂了,但不確定。請給你的建議來克服這一點。線程同步。正確打印數值
問題:
具有三個陣列,每一個陣列被分配給線程,輸出應在序列...
T1 = {1,4,7} T2 = {2,5, 8} T3 = {3,6,9}
預期輸出
出來= {1,2,3,4,5,6,7,8,9}
WHT我試圖:
public class Worker extends Thread {
Worker next;
int[] val;
Object lock = new Object();
Worker(int[] val) {
this.val = val;
}
public void setnext(Worker next) {
this.next = next;
}
@Override
public void run() {
for (int i = 0; i < val.length; i++) {
synchronized (this) {
synchronized (next) {
System.out.println(val[i]);
next.notify();
}
synchronized (this) {
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
synchronized(next){
next.notify();
}
}
}
}
和測試類
public class TestWorker {
public static void main(String[] args) throws Exception{
Worker worker1 = new Worker(new int[]{1,4,7});
Worker worker2 = new Worker(new int[]{2,5,8});
Worker worker3 = new Worker(new int[]{3,6,9});
worker1.setnext(worker3);
worker2.setnext(worker1);
worker3.setnext(worker2);
worker1.start();
worker2.start();
worker3.start();
}
}
讓我們看看你已經嘗試什麼樣的代碼 – xkickflip 2013-04-06 05:00:29
JST補充說,我試過代碼..感覺messup,所以我沒有以前添加... – user1983527 2013-04-06 05:05:19
你打算用做這個代碼?有很多其他的方式輸出順序 – BlackJoker 2013-04-06 05:07:08