Core Java學習筆記 多線程

          Posted on 2009-06-30 18:48 eric_xu 閱讀(210) 評論(0)  編輯  收藏 所屬分類: Java

          事件處理

          ColorAction作為ButtonPanel類的內部類,ColorAction就自動擁有訪問外部類的權限。

          將組件變成事件監聽器,panel本身作為事件監聽器

          Object source = event.getSource()返回發生事件的對象引用。

          String command = event.getActionCommand()

          getSystemLookAndFeelClassName()獲取系統觀感

          UIManager.setLookAndFeel(String className)設置觀感

          Java中實現一個接口的任何類都必須實現其中的所有方法。

          Public interface WindowsListener

          Public class WindowsAdapter implements WindowsListener

          匿名內部類

          EventObject類有一個子類AWTEvent,它是所有AWT事件類的父類。Swing組件將生成其他事件類型的事件對象;它們都直接擴展于EventObject,而不是AWTEvent

          Java使用一個線程在后臺進行垃圾回收。

          Sleep()Thread類的一個靜態方法,暫停當前線程活動。會拋出InterruptedException異常。

          實現Runnable接口

          public interface Runnable{

              public abstract void run();

          }

          Thread t = new Thread(Runnable r);

          當你用new操作符創建一個線程時。還沒有調用thread.start(),處于新生狀態。

          t.start;

          調用了thread.start()方法之后。線程就變成了Runnable狀態了。

          Threadstart方法會創建一個新的線程來執行run方法,啟動這個線程,將引發調用run()方法。

          Thread(Runnable target)構造一個新的線程來調用指定targetrun()方法。

          interrupt方法在一個線程上被調用時,該線程的中斷狀態將被置位。

          調用靜態的Thread.currentThread方法來取得當前的線程。然后調用它的isInterrupted方法。

          如果一個線程被阻塞了,就無法檢查中斷狀態了。就會產生InterruptedException異常。例如sleep或者wait,這時候程序是在等待的,所以不可能去檢查currentThread().isInterrupted()是否返回true

          sleep方法拋出一個InterruptedException異常時,它同時也會清除中斷狀態。

          Thread接口:
          void interrupt()
          發送一個中斷請求給一個線程。中斷狀態被設為true。如果正在被sleep調用阻塞,拋出一個InterruptedException

          static boolean interrupted()
          檢查當前線程是否已經被中斷了。調用這個方法會把當前的現成中斷狀態設置成false. currentThread

          boolean interrupted()
          檢查一個線程是否已經被終止了。

          static Thread currentThread()
          返回當前線程的Thread對象。

          線程組

          ThreadGroup g = new ThreadGroup(String groupName);

          Thread t = new Thread(g, threadName);

          未捕獲異常處理器

          鎖對象

          同步synchronized關鍵字,ReentrantLock

          Private Lock mylock = new ReentrantLock();

          Mylock.lock;

          Try{

          ...

          }finally{

          Mylock.unlock;

          }

          條件對象

          Condition newCondition()返回該鎖相關的一個條件對象;

          void await()將該線程放到條件的等待集;直到條件被改變時,再次激活等待線程。

          void signalAll()解除該條件的等待集中所有線程的阻塞狀態。

          Synchronized方法,即線程必須先獲得對象的鎖,才能調用該方法。

          publicfinalnativevoid notify();

          publicfinalnativevoid notifyAll();

          解除在該對象上調用wait的線程的阻塞狀態。

          public final native void wait(long timeout) throws InterruptedException;

          導致線程進入等待狀態直到被通知。只能在同步的方法中用。

          posts - 37, comments - 5, trackbacks - 0, articles - 0

          Copyright © eric_xu

          主站蜘蛛池模板: 盖州市| 张家港市| 望谟县| 开封市| 淮北市| 股票| 娄底市| 柳林县| 成武县| 华坪县| 宝鸡市| 曲沃县| 邳州市| 怀远县| 无锡市| 奉新县| 杭锦旗| 岫岩| 奉节县| 资兴市| 上高县| 航空| 湄潭县| 扬州市| 灵台县| 绩溪县| 汶川县| 丹东市| 阳朔县| 呼伦贝尔市| 怀来县| 重庆市| 满洲里市| 梁河县| 耿马| 广宗县| 铜山县| 怀宁县| 双鸭山市| 仁怀市| 梁平县|