最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解java線程的開始、暫停、繼續(xù)

 更新時(shí)間:2017年01月03日 12:07:13   作者:Joanna.Yan  
本文將介紹通過(guò)線程讀取文件內(nèi)容,并且可以控制線程的開始、暫停、繼續(xù),來(lái)控制讀文件。具有一定的參考作用,下面跟著小編一起來(lái)看下吧

Android項(xiàng)目中的一個(gè)需求:通過(guò)線程讀取文件內(nèi)容,并且可以控制線程的開始、暫停、繼續(xù),來(lái)控制讀文件。在此記錄下。

直接在主線程中,通過(guò)wait、notify、notifyAll去控制讀文件的線程(子線程),報(bào)錯(cuò):java.lang.IllegalMonitorStateException。

需要注意的幾個(gè)問(wèn)題:

  1. 任何一個(gè)時(shí)刻,對(duì)象的控制權(quán)(monitor)只能被一個(gè)線程擁有。
  2. 無(wú)論是執(zhí)行對(duì)象的wait、notify還是notifyAll方法,必須保證當(dāng)前運(yùn)行的線程取得了該對(duì)象的控制權(quán)(monitor)。
  3. 如果在沒(méi)有控制權(quán)的線程里執(zhí)行對(duì)象的以上三種方法,就會(huì)報(bào)錯(cuò)java.lang.IllegalMonitorStateException。
  4. JVM基于多線程,默認(rèn)情況下不能保證運(yùn)行時(shí)線程的時(shí)序性。

線程取得控制權(quán)的3種方法:

  1. 執(zhí)行對(duì)象的某個(gè)同步實(shí)例方法。
  2. 執(zhí)行對(duì)象對(duì)應(yīng)類的同步靜態(tài)方法。
  3. 執(zhí)行對(duì)該對(duì)象加同步鎖的同步塊。

這里將開始、暫停、繼續(xù)封裝在線程類中,直接調(diào)用該實(shí)例的方法就行。

public class ReadThread implements Runnable{
  public Thread t;
  private String threadName;
  boolean suspended=false;
  public ReadThread(String threadName){
   this.threadName=threadName;
   System.out.println("Creating " + threadName );
  }
  public void run() {
   for(int i = 10; i > 0; i--) {
   System.out.println("Thread: " + threadName + ", " + i);
   // Let the thread sleep for a while.
   try {
    Thread.sleep(300);
    synchronized(this) {
     while(suspended) {
      wait();
     }
    }
   } catch (InterruptedException e) {
    System.out.println("Thread " + threadName + " interrupted.");
    e.printStackTrace();
   }
   System.out.println("Thread " + threadName + " exiting.");
   }
  }
  /**
   * 開始
   */
  public void start(){
   System.out.println("Starting " + threadName );
   if(t==null){
    t=new Thread(this, threadName);
    t.start();
   }
  }
  /**
   * 暫停
   */
   void suspend(){
   suspended = true;
  }
   /**
   * 繼續(xù)
   */
   synchronized void resume(){
    suspended = false;
    notify();
   }
 }

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

  • Java Floyd算法求有權(quán)圖(非負(fù)權(quán))的最短路徑并打印

    Java Floyd算法求有權(quán)圖(非負(fù)權(quán))的最短路徑并打印

    這篇文章主要介紹了Java Floyd算法求有權(quán)圖(非負(fù)權(quán))的最短路徑并打印,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題

    Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題

    這篇文章主要介紹了Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java的數(shù)據(jù)類型和參數(shù)傳遞(詳解)

    Java的數(shù)據(jù)類型和參數(shù)傳遞(詳解)

    下面小編就為大家?guī)?lái)一篇Java的數(shù)據(jù)類型和參數(shù)傳遞(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • java基于JDBC連接Oracle 11g Release2實(shí)例分析

    java基于JDBC連接Oracle 11g Release2實(shí)例分析

    這篇文章主要介紹了java基于JDBC連接Oracle 11g Release2的方法,實(shí)例分析了JDBC連接Oracle 11g Release2容易出現(xiàn)的異常與解決方法,需要的朋友可以參考下
    2015-06-06
  • lombok中@Data使用常見的小坑及解決

    lombok中@Data使用常見的小坑及解決

    在Java中使用Lombok庫(kù)的@Data注解時(shí),布爾類型屬性可能導(dǎo)致生成的get方法不符合預(yù)期,對(duì)于非is開頭的布爾屬性,Lombok生成的方法會(huì)添加is前綴,導(dǎo)致原本期待的get方法不存在,例如,對(duì)于屬性private boolean active,Lombok會(huì)生成方法名為isActive而不是getActive
    2024-10-10
  • Swing拆分窗格控件JSplitPane使用詳解

    Swing拆分窗格控件JSplitPane使用詳解

    這篇文章主要為大家詳細(xì)介紹了Swing拆分窗格控件JSplitPane的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹

    SpringBoot業(yè)務(wù)邏輯異常的處理方法介紹

    本篇文章為大家展示了如何在SpringBoot中統(tǒng)一處理邏輯異常,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲
    2022-09-09
  • Java中PageHelper分頁(yè)后對(duì)list操作導(dǎo)致分頁(yè)無(wú)效

    Java中PageHelper分頁(yè)后對(duì)list操作導(dǎo)致分頁(yè)無(wú)效

    在項(xiàng)目中使用分頁(yè)插件的時(shí)候發(fā)現(xiàn)PageHelper插件失效了,本文就來(lái)介紹一下Java中PageHelper分頁(yè)后對(duì)list操作導(dǎo)致分頁(yè)無(wú)效的解決方法,感興趣的可以了解一下
    2021-05-05
  • Spring各版本新特性的介紹

    Spring各版本新特性的介紹

    今天小編就為大家分享一篇關(guān)于Spring各版本新特性的介紹,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • JAVA值傳遞和引用傳遞方式

    JAVA值傳遞和引用傳遞方式

    文章總結(jié):在Java中,處理不可變集合時(shí),直接修改操作會(huì)拋出異常,正確的做法是使用可變集合類型,如ArrayList,或者通過(guò)流操作(stream().filter())來(lái)實(shí)現(xiàn)修改,理解Java方法參數(shù)的傳遞方式(值傳遞)是關(guān)鍵,這決定了如何正確地修改對(duì)象的狀態(tài)
    2024-11-11

最新評(píng)論

读书| 西盟| 广汉市| 靖西县| 磴口县| 竹溪县| 图木舒克市| 揭阳市| 吕梁市| 桦川县| 汝阳县| 石泉县| 建阳市| 普宁市| 阳山县| 冕宁县| 浦县| 炉霍县| 江油市| 莱州市| 上饶县| 普格县| 新干县| 信丰县| 元氏县| 揭西县| 赤壁市| 长春市| 湄潭县| 巩义市| 乌拉特后旗| 澳门| 贵阳市| 河南省| 凤冈县| 嘉荫县| 赫章县| 额敏县| 青川县| 秦安县| 东平县|