[問題] thread wakeup

看板java作者 (我不知道)時間13年前 (2011/08/24 11:37), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
想要做出兩個thread 一個thread(A)在執行完一段程式後就先暫停 如果另一個thread(B)的某一個method被其他人調用到 就會喚醒thread(A) 程式碼如下 class A extends Thread{ public A(){ work(); wait(); } public void work(){ /* 省略 **/ } } class B extends Thread{ public B(){ } public void setNewState(){ notify(); } } 一開始就之前的印象這樣寫 程式執行沒有錯誤 但是後來想想似乎需要做synchronized 才能使用 是這樣沒錯吧? 因此改成如下 class A extends Thread{ public A(){ work(); synchronized(obj){ wait(); } } public void work(){ /* 省略 **/ } } class B extends Thread{ public B(){ } public void setNewState(){ synchronized(obj){ notify(); } } } 想要請問這樣寫法正確嗎?? 另外若我許多個相同的threadA threadB,他們彼此一對一對 使用這個方法來喚醒對方 lock的物件(obj)應該要怎麼寫比較好呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.71.152

08/27 00:04, , 1F
我正想問... 你的synchronized到底想鎖住什麼東西?
08/27 00:04, 1F

08/27 00:29, , 2F
鎖 this 就好了吧... ?
08/27 00:29, 2F

08/27 16:27, , 3F
鎖this應該就可以了= =a不好意思對這個沒有很熟,
08/27 16:27, 3F
文章代碼(AID): #1EL78FVZ (java)