宋利興__MySQL複習1

來源:互聯網
上載者:User
 

Java   第十三章

今天主要講了關於線程同步通訊以及定時器:Timer和TimerTask的有關方法,並例舉了一些案例。
    為避免死結,就應該讓線程在進入阻塞狀態時盡量釋放其鎖定資源,以為其他的線程提供啟動並執行機會,Object類中定義了幾個有用的方法:wait()、notify()、notifyAll()。

1、wait():被鎖定的對象可以調用wait()方法,這將導致當前線程被阻塞並釋放該對象的互斥鎖,即解除了wait()方法當前對象的鎖定狀態,其他的線程就有機會訪問該對象。

2、notify():喚醒調用wait()方法後被阻塞的線程。每次運行該方法只能喚醒一個線程。

3、notifyAll():喚醒所有調用wait()方法被阻塞的線程。

定時器:Timer和TimerTask:

java.util包中的Timer和TimerTask類也可實現多線程

1、Timer類實現的是類似鬧鐘的功能,也就是定時或者每隔一定時間間隔觸發一次線程。

2、TimerTask類是一個抽象類別,該類實現了Runnable介面,具備多線程的能力。

通過繼承TimerTask類建立子類,使該子類獲得多線程的能力,將需要多線程執行的代碼書寫在run方法內部,然後通過Timer類啟動線程的執行。

執行個體,使用Timer和TimerTask組合實現的多線程。

class TimerTask1 extends TimerTask {      

      public void run() {

           try{

                 for(int i = 0;i < 5;i++){

                      Thread.sleep(1000);

                      System.out.println("Run" + i);

                 }

           }catch(Exception e){}

      }

}

public class TestTimer {

      public static void main(String[] args) {

           Timer t = new Timer();//定時器

           TimerTask1 tt1 = new TimerTask1();

           t.schedule(tt1, 0);//啟動線程,tt1是需要啟動的線程對象

           try{

                 for(int i = 0;i < 5;i++){

                      Thread.sleep(1000);

                      System.out.println("Main:" + i);

                 }

           }catch(Exception e){}

      }

}

schedule()方法:

1、public void schedule(TimerTask task,Date time):該方法的作用是在到達time指定的時間或已經超過該時間時執行線程task。
Date d = new Date(2009-1900,10-1,1,10,0,0);
t. schedule(task,d);

2、public void schedule(TimerTask task, Date firstTime, long period):在時間到達firstTime開始,每隔period毫秒就啟動一次task指定的線程,這種方式會重複啟動線程。
Date d = new Date(2009-1900,10-1,1,10,0,0);
t. schedule(task,d,20000);

4、public void schedule(TimerTask task,long delay)在執行schedule方法delay毫秒以後啟動線程task。
t.schedule(task,1000);//在執行該行啟動代碼1000毫秒後啟動一次線程task

5、public void schedule(TimerTask task,long delay,long period):在執行schedule方法delay毫秒以後啟動線程task,然後每隔period毫秒重複啟動線程task。

以上是今天所講的內容概述。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.