看板 java 關於我們 聯絡資訊
想要做出兩個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
LaPass:我正想問... 你的synchronized到底想鎖住什麼東西? 08/27 00:04
darkk6:鎖 this 就好了吧... ? 08/27 00:29
po500922:鎖this應該就可以了= =a不好意思對這個沒有很熟, 08/27 16:27