cuiyi's blog(崔毅 crazycy)

          記錄點滴 鑒往事之得失 以資于發(fā)展
          數(shù)據(jù)加載中……

          線程中的current thread not owner異常錯誤

          非常感謝你的閱讀,如果你覺得好或者對你有幫助,請積極給一個留言反饋以示鼓勵。?

          多線程常用的一些方法: wait(),wait(long),notify(),notifyAll()等

          這些方法是當前類的實例方法,

          wait()????? 是使持有對象鎖的線程釋放鎖;
          wait(long)是使持有對象鎖的線程釋放鎖時間為long(毫秒)后,再次獲得鎖,wait()和wait(0)等價;
          notify()??? 是喚醒一個正在等待該對象鎖的線程,如果等待的線程不止一個,那么被喚醒的線程由jvm確定;
          notifyAll? 是喚醒所有正在等待該對象鎖的線程.

          并且應該優(yōu)先使用notifyAll()方法,因為喚醒所有線程比喚醒一個線程更容易讓jvm找到最適合被喚醒的線程.

          對于上述方法,只有在當前線程中才能使用,否則報運行時錯誤java.lang.IllegalMonitorStateException:?current?thread?not?owner.

          從實現(xiàn)角度來分析:
          在線程調(diào)用wait()方法時,需要把它放到一個同步段里,即應該在調(diào)用前使用
          1synchroed(this){
          2??thread.wait();
          3??
          4}

          5

          否則將會出現(xiàn)"java.lang.IllegalMonitorStateException: current thread not owner"的異常。


          Thanks very much to visit blog,? welcome your feedback,? your feedback is the Driver && Power to me

          posted on 2006-10-08 19:21 crazycy 閱讀(13852) 評論(24)  編輯  收藏 所屬分類: JavaSE語言

          評論

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          您的內(nèi)容對我有幫助,謝謝!
          2007-05-30 14:22 | shaoxiongwang

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          thak you !
          2007-07-12 15:14 | netiger

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          謝謝^_^
          2007-08-01 17:17 | txd

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          3ks
          2008-01-21 15:59 | ronchie

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          ths
          2008-03-23 20:48 | er

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          謝謝啦
          2008-03-31 16:46 | hxfein

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          Once I was given an interview in IBM, the program is just to write interaction between productor and consumer, I met the problem; and, I solved at that time, but sadly I cannot give the explation about this.
          2008-03-31 22:13 | crazycy

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          非常感謝!受益匪淺!我在用友面試時就遇到這個問題!但是沒有答上來!
          2008-04-16 18:05 | zhanggl

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          Thanks! It works!
          2008-08-01 12:14 | Shengkai Zhu

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          謝謝!
          2008-10-08 13:23 | freemelody

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          感謝
          2008-11-11 10:11 | 筋抽的狗狗

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          e感謝,根據(jù)您的幫助,我解決了此異常。
          2008-11-20 13:14 | autumn

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          Anyway, you are best.
          2009-03-23 09:43 | IMGM

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          thanks you!
          it is very helpfull
          2009-06-10 18:03 | duanhw

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          thank you
          2009-06-19 09:49 | mouse

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          只有在當前線程中才能使用???
          public class TaskMonitor extends Thread {
          private CreateTask create = null;
          public TaskMonitor(CreateTask create){
          this.create = create;
          }
          //任務監(jiān)控,每隔2妙,通知CreateTask創(chuàng)造1條任務放到隊列中
          public void run() {
          while(true){
          try {
          Thread.sleep(2000);
          System.out.println("TaskMonitor");
          synchronized (create) {
          create.notify();
          }
          } catch (InterruptedException e) {
          e.printStackTrace();
          }
          }
          }
          }
          其中的create就是另一個線程的對象
          2009-06-22 13:49 | 乞丐

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          Thank you.
          2009-09-16 16:59 | winstone

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          good!!!
          2009-11-22 10:17 | missme

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          謝謝你的分析,但是還不是很詳細,如果能再詳細一點就好了。
          2010-02-04 23:18 | netant83

          # re: 線程中的current thread not owner異常錯誤[未登錄]  回復  更多評論   

          謝謝!
          2010-03-20 15:20 | 1

          # re: 線程中的current thread not owner異常錯誤[未登錄]  回復  更多評論   

          你說的不對,兩個線程共用一個鎖,是可以的。
          public A extends Thread{
          public static Object lock = new Object();
          public void run(){
          synchronized(lock){
          try {
          lock.wait();
          } catch (InterruptedException e) {
          e.printStackTrace();
          }
          }
          }
          }
          public B extends Thread{
          public void run(){
          Object lock = A.lock;
          synchronized(lock){
          lock.notify();
          }
          }
          }
          2010-07-02 12:24 | tony

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          很好的內(nèi)容,有幫助
          2010-07-26 10:52 | wharry

          # re: 線程中的current thread not owner異常錯誤[未登錄]  回復  更多評論   

          你說的很好,對我很有用!非常感謝!
          2011-04-02 23:08 | solo

          # re: 線程中的current thread not owner異常錯誤  回復  更多評論   

          很有用
          2015-09-10 14:32 | 11
          主站蜘蛛池模板: 仪征市| 边坝县| 上思县| 溧阳市| 班戈县| 阿巴嘎旗| 恩施市| 涞源县| 金门县| 汉中市| 宿迁市| 乐清市| 宁德市| 娄底市| 沧源| 顺义区| 通化县| 尚义县| 古交市| 盐源县| 遵义县| 遂昌县| 盐边县| 贵溪市| 图木舒克市| 贵州省| 延边| 井陉县| 名山县| 济阳县| 剑河县| 株洲县| 临泽县| 黄浦区| 阳春市| 无极县| 汉沽区| 兴海县| 兴城市| 镇赉县| 南充市|