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

java控制線程運(yùn)行

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

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

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

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

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

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

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

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

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

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

4、如何控制線程的運(yùn)行

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

代碼如下:

復(fù)制代碼 代碼如下:

public class ThreadControlTest1 implements Runnable
{
 private int percent = 0;
 public void run()
 {
  while(true)
  {
   System.out.println("傳送進(jìn)度:"+ 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、運(yùn)行,控制臺上將打印文件傳輸?shù)哪M過程。可以看出,如果將該類對象以線程運(yùn)行,while循環(huán)會執(zhí)行10次后退出。
但是,需要在某個時刻(如5秒后)暫停線程運(yùn)行(如1分鐘),但又不能使用Thread的相關(guān)函數(shù),該怎么辦?

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

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

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

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

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

復(fù)制代碼 代碼如下:

public class ThreadControlTest1 implements Runnable
{
 private int percent = 0;
 private boolean isRun = true;
 public void run()
 {
  while(isRun)
  {
   System.out.println("傳送進(jìn)度:"+ 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();
 }
}

相關(guān)文章

  • Java數(shù)據(jù)結(jié)構(gòu)之順序表的實現(xiàn)

    Java數(shù)據(jù)結(jié)構(gòu)之順序表的實現(xiàn)

    線性表(linear?list)是n個具有相同特性的數(shù)據(jù)元素的有限序列。順序表是常見的線性表之一,本文將詳細(xì)講講順序表的原理與實現(xiàn),需要的可以參考一下
    2022-08-08
  • java 圖片驗證碼的實現(xiàn)代碼

    java 圖片驗證碼的實現(xiàn)代碼

    java 圖片驗證碼的實現(xiàn)代碼,需要的朋友可以參考一下
    2013-05-05
  • 詳解SpringBoot實現(xiàn)JPA的save方法不更新null屬性

    詳解SpringBoot實現(xiàn)JPA的save方法不更新null屬性

    直接調(diào)用原生Save方法會導(dǎo)致null屬性覆蓋到數(shù)據(jù)庫,使用起來十分不方便。本文詳細(xì)的介紹了如何解決這個問題,非常具有實用價值,需要的朋友可以參考下
    2018-12-12
  • Maven設(shè)置JDK版本的兩種方法實現(xiàn)

    Maven設(shè)置JDK版本的兩種方法實現(xiàn)

    本文主要介紹了Maven設(shè)置JDK版本的兩種方法實現(xiàn),是通過Apache Maven Compiler Plugin插件實現(xiàn)的,具有一定的參考價值,感興趣的可以了解一下
    2024-07-07
  • 深入探究Java線程的狀態(tài)與生命周期

    深入探究Java線程的狀態(tài)與生命周期

    在java中,任何對象都要有生命周期,線程也不例外,它也有自己的生命周期。線程的整個生命周期可以分為5個階段,分別是新建狀態(tài)、就緒狀態(tài)、運(yùn)行狀態(tài)、阻塞狀態(tài)和死亡狀態(tài)
    2022-04-04
  • SpringBoot實現(xiàn)阿里云短信接口對接的示例代碼

    SpringBoot實現(xiàn)阿里云短信接口對接的示例代碼

    這篇文章主要介紹了SpringBoot實現(xiàn)阿里云短信接口對接的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Java中HashSet集合元素去重的操作代碼

    Java中HashSet集合元素去重的操作代碼

    在 Java 編程的廣闊天地里,集合框架是開發(fā)者們不可或缺的得力工具,其中,HashSet以其獨(dú)特的去重特性,成為處理不重復(fù)元素場景的首選,今天,咱們就深入探究一下HashSet集合元素的去重操作,需要的朋友可以參考下
    2025-03-03
  • Spring @Transaction 注解執(zhí)行事務(wù)的流程

    Spring @Transaction 注解執(zhí)行事務(wù)的流程

    這篇文章主要介紹了Spring @Transaction 注解執(zhí)行事務(wù)的流程,Spring 是如何開啟事務(wù)的?又是如何進(jìn)行提交事務(wù)和關(guān)閉事務(wù)的,本文給大家詳細(xì)介紹,需要的朋友可以參考下
    2021-06-06
  • Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解

    Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解

    這篇文章主要為大家介紹了Spring Cloud動態(tài)配置刷新RefreshScope使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • JWT整合Springboot的方法步驟

    JWT整合Springboot的方法步驟

    本文主要介紹了JWT整合Springboot的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論

阿城市| 南召县| 湖南省| 板桥市| 石棉县| 上饶县| 洪洞县| 琼海市| 永寿县| 老河口市| 鹿泉市| 永和县| 鹰潭市| 台安县| 吉水县| 潮州市| 盐源县| 宁安市| 灌南县| 新干县| 四平市| 沂源县| 淮南市| 敦化市| 烟台市| 黎城县| 德保县| 兴化市| 景谷| 游戏| 金阳县| 澄江县| 孟连| 秦安县| 新丰县| 南平市| 易门县| 彭州市| 沁水县| 株洲市| 长宁县|