亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

java控制線程運行

 更新時間:2014年04月14日 07:57:52   作者:  
這篇文章主要介紹了java控制線程運行,需要的朋友可以參考下

1、線程的控制很常見,如文件傳送到一半時,需要暫停文件傳送,或終止文件傳送,這實際上就是控制線程的運行。

2、線程有創(chuàng)建、可運行、運行中、阻塞、死亡5個狀態(tài)。

創(chuàng)建:使用new運算符創(chuàng)建一個線程

可運行:使用start方法啟動一個線程后,系統(tǒng)分配了資源

運行中狀態(tài):執(zhí)行線程的run方法

阻塞:運行的線程因為某種原因停止繼續(xù)運行

死亡狀態(tài):線程結束

3、傳統(tǒng)方法的安全問題

Thread的stop(),suspend(),resume(),destroy()方法,因為不安全,可能造成死鎖,已經不再使用了。

4、如何控制線程的運行

舉個例子,假如某個文件的傳輸需要10s,讓其傳輸到某個時刻暫停傳輸,然后繼續(xù),到傳完為止。使用實現Runnable的方法完成,首先是文件傳輸的Runnable類

代碼如下:

復制代碼 代碼如下:

public class ThreadControlTest1 implements Runnable
{
 private int percent = 0;
 public void run()
 {
  while(true)
  {
   System.out.println("傳送進度:"+ percent +"%");
   try
   {
    Thread.sleep(1000);
   }
   catch(Exception ex)
   {}
   percent += 10;
   if(percent == 100)
   {
    System.out.println("傳送完畢");
    break;
   }
  }
 }
 public static void main(String[] args)
 {
  ThreadControlTest1 ft = new ThreadControlTest1();
  Thread th = new Thread(ft);
  th.start();
 }

}

5、運行,控制臺上將打印文件傳輸的模擬過程??梢钥闯?,如果將該類對象以線程運行,while循環(huán)會執(zhí)行10次后退出。
但是,需要在某個時刻(如5秒后)暫停線程運行(如1分鐘),但又不能使用Thread的相關函數,該怎么辦?

要解決這個問題,常見的方法如下:

1.當需要暫停時,干脆讓線程的run方法結束運行以釋放資源(實際上就是讓該線程永久結束)

2.線程需要繼續(xù)時,新開辟一個線程繼續(xù)工作

如何讓run方法結束呢,在run方法中有一個while循環(huán),將改循環(huán)的標志由true改為false即可。

6、上面的代碼可以改為如下:

復制代碼 代碼如下:

public class ThreadControlTest1 implements Runnable
{
 private int percent = 0;
 private boolean isRun = true;
 public void run()
 {
  while(isRun)
  {
   System.out.println("傳送進度:"+ percent +"%");
   try
   {
    Thread.sleep(1000);
   }
   catch(Exception ex)
   {}
   percent += 10;
   if(percent == 100)
   {
    System.out.println("傳送完畢");
    break;
   }
  }
 }
 public static void main(String[] args)
 {
  ThreadControlTest1 ft = new ThreadControlTest1();
  Thread th = new Thread(ft);
  th.start();
  try
  {
   Thread.sleep(5000);
  }catch(Exception ex)
  {}
  ft.isRun = false;
  System.out.println("暫停一分鐘");
  try
  {
   Thread.sleep(1000*60);
  }catch(Exception ex)
  {}
  ft.isRun = true;
  th = new Thread(ft);
  th.start();
 }
}

相關文章

  • 基于@JsonFormat的導包問題

    基于@JsonFormat的導包問題

    這篇文章主要介紹了關于@JsonFormat的導包問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • spring cloud Ribbon用法及原理解析

    spring cloud Ribbon用法及原理解析

    這篇文章主要介紹了spring cloud Ribbon用法及原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • 如何利用rabbitMq的死信隊列實現延時消息

    如何利用rabbitMq的死信隊列實現延時消息

    這篇文章主要介紹了如何利用rabbitMq的死信隊列實現延時消息問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Java面向對象之作用域詳細解讀

    Java面向對象之作用域詳細解讀

    這篇文章主要介紹了Java面向對象之作用域詳細解讀,在java編程中,主要的變量就是屬性和局部變量,局部變量一般是指在成員方法中定義的變量,局部變量也就是除了屬性之外的其他變量,作用域為定義他的代碼塊中,需要的朋友可以參考下
    2024-01-01
  • Java中的匿名內部類小結

    Java中的匿名內部類小結

    java內部類分為: 成員內部類、靜態(tài)嵌套類、方法內部類、匿名內部類。這篇文章主要介紹了Java中的匿名內部類的相關資料,需要的朋友可以參考下
    2016-07-07
  • servlet基礎知識_動力節(jié)點Java學院整理

    servlet基礎知識_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了servlet基礎的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • IDEA自定義常用代碼塊及自定義快捷摸板

    IDEA自定義常用代碼塊及自定義快捷摸板

    這篇文章主要介紹了IDEA自定義常用代碼塊及自定義快捷摸板的相關知識,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-09-09
  • 詳解MyBatis工作原理

    詳解MyBatis工作原理

    近來想寫一個mybatis的分頁插件,但是在寫插件之前肯定要了解一下mybatis具體的工作原理吧,本文就詳細總結了MyBatis工作原理,,需要的朋友可以參考下
    2021-05-05
  • Go Java算法之從英文中重建數字示例詳解

    Go Java算法之從英文中重建數字示例詳解

    這篇文章主要為大家介紹了Go Java算法之從英文中重建數字示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • Java中的ThreadLocal與ThreadLocalMap詳解

    Java中的ThreadLocal與ThreadLocalMap詳解

    這篇文章主要介紹了Java中的ThreadLocal與ThreadLocalMap詳解,ThreadLocal 是一個線程局部變量,其實的功用非常簡單,就是為每一個使用該變量的線程都提供一個變量值的副本,是Java中一種較為特殊的線程綁定機制,需要的朋友可以參考下
    2023-09-09

最新評論