中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

Java中怎么使用線程組

這篇文章主要介紹“Java中怎么使用線程組”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“Java中怎么使用線程組”文章能幫助大家解決問題。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:主機域名、網絡空間、營銷軟件、網站建設、浚縣網站維護、網站推廣。

Java中線程組(ThreadGroup類)

Java中使用ThreadGroup類來代表線程組,表示一組線程的集合,可以對一批線程和線程組進行管理。可以把線程歸屬到某一個線程組中,線程組中可以有線程對象,也可以有線程組,組中還可以有線程,這樣的組織結構有點類似于樹的形式,如圖所示。

Java中怎么使用線程組

用戶創建的所有線程都屬于指定線程組,如果沒有顯式指定屬于哪個線程組,那么該線程就屬于默認線程組(即main線程組)。默認情況下,子線程和父線程處于同一個線程組。

此外,只有在創建線程時才能指定其所在的線程組,線程運行中途不能改變它所屬的線程組,也就是說線程一旦指定所在的線程組就不能改變。

二.為什么要使用線程組

1.安全

同一個線程組的線程是可以相互修改對方的數據的。但如果在不同的線程組中,那么就不能“跨線程組”修改數據,可以從一定程度上保證數據安全。

2.批量管理

可以批量管理線程或線程組對象,有效地對線程或線程組對象進行組織或控制。

三.線程組使用示例

1.線程關聯線程組:一級關聯

所謂一級關聯就是父對象中有子對象,但并不創建孫對象。比如創建一個線程組,然后將創建的線程歸屬到該組中,從而對這些線程進行有效的管理。代碼示例如下:

public class ThreadGroupTest {
 public static void main(String[] args) {
 ThreadGroup rootThreadGroup = new ThreadGroup("root線程組");
 Thread thread0 = new Thread(rootThreadGroup, new MRunnable(), "線程A");
 Thread thread1 = new Thread(rootThreadGroup, new MRunnable(), "線程B");
 thread0.start();
 thread1.start();
 }
}
class MRunnable implements Runnable {
 @Override
 public void run() {
 while (!Thread.currentThread().isInterrupted()) {
 System.out.println("線程名: " + Thread.currentThread().getName() 
+ ", 所在線程組: " + Thread.currentThread().getThreadGroup().getName()) ;
 try {
 Thread.sleep(1000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 }
 }
}
復制代碼

執行結果如下:

線程名: 線程A, 所在線程組: root線程組
線程名: 線程B, 所在線程組: root線程組
復制代碼

2.線程關聯線程組:多級關聯

所謂的多級關聯就是父對象中有子對象,子對象中再創建孫對象也就出現了子孫的效果了。比如使用下圖第二個構造方法,將子線程組歸屬到某個線程組,再將創建的線程歸屬到子線程組,這樣就會有線程樹的效果了。

Java中怎么使用線程組

代碼示例如下:

public class ThreadGroupTest {
 public static void main(String[] args) {
 ThreadGroup rootThreadGroup = new ThreadGroup("root線程組");
 Thread thread0 = new Thread(rootThreadGroup, new MRunnable(), "線程A");
 Thread thread1 = new Thread(rootThreadGroup, new MRunnable(), "線程B");
 thread0.start();
 thread1.start();
 ThreadGroup threadGroup1 = new ThreadGroup(rootThreadGroup, "子線程組");
 Thread thread2 = new Thread(threadGroup1, new MRunnable(), "線程C");
 Thread thread3 = new Thread(threadGroup1, new MRunnable(), "線程D");
 thread2.start();
 thread3.start();
 }
}
class MRunnable implements Runnable {
 @Override
 public void run() {
 while (!Thread.currentThread().isInterrupted()) {
 System.out.println("線程名: " + Thread.currentThread().getName()
 + ", 所在線程組: " + Thread.currentThread().getThreadGroup().getName()
 + ", 父線程組: " + Thread.currentThread().getThreadGroup().getParent().getName());
 try {
 Thread.sleep(1000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 }
 }
}
復制代碼

執行結果如下:

線程名: 線程A, 所在線程組: root線程組, 父線程組: main
線程名: 線程B, 所在線程組: root線程組, 父線程組: main
線程名: 線程C, 所在線程組: 子線程組, 父線程組: root線程組
線程名: 線程D, 所在線程組: 子線程組, 父線程組: root線程組
復制代碼

3.批量管理組內線程

使用線程組自然是要對線程進行批量管理,比如可以批量中斷組內線程,代碼示例如下:

public class ThreadGroupTest {
 public static void main(String[] args) {
 ThreadGroup rootThreadGroup = new ThreadGroup("root線程組");
 Thread thread0 = new Thread(rootThreadGroup, new MRunnable(), "線程A");
 Thread thread1 = new Thread(rootThreadGroup, new MRunnable(), "線程B");
 thread0.start();
 thread1.start();
 ThreadGroup threadGroup1 = new ThreadGroup(rootThreadGroup, "子線程組");
 Thread thread2 = new Thread(threadGroup1, new MRunnable(), "線程C");
 Thread thread3 = new Thread(threadGroup1, new MRunnable(), "線程D");
 thread2.start();
 thread3.start();
 rootThreadGroup.interrupt();
 System.out.println("批量中斷組內線程");
 }
}
class MRunnable implements Runnable {
 @Override
 public void run() {
 while (!Thread.currentThread().isInterrupted()) {
 System.out.println("線程名: " + Thread.currentThread().getName()
 + ", 所在線程組: " + Thread.currentThread().getThreadGroup().getName()
 + ", 父線程組: " + Thread.currentThread().getThreadGroup().getParent().getName());
 try {
 Thread.sleep(1000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 break;
 }
 }
 System.out.println(Thread.currentThread().getName() + "執行結束");
 }
}
復制代碼

執行結果如下:

線程名: 線程A, 所在線程組: root線程組, 父線程組: main
線程名: 線程B, 所在線程組: root線程組, 父線程組: main
線程名: 線程C, 所在線程組: 子線程組, 父線程組: root線程組
線程名: 線程D, 所在線程組: 子線程組, 父線程組: root線程組
批量中斷組內線程
線程A執行結束
線程B執行結束
線程C執行結束
線程D執行結束
復制代碼

關于“Java中怎么使用線程組”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注創新互聯行業資訊頻道,小編每天都會為大家更新不同的知識點。

網站題目:Java中怎么使用線程組
網站鏈接:http://m.2m8n56k.cn/article4/jgesie.html

成都網站建設公司_創新互聯,為您提供網站策劃定制網站Google網站制作企業網站制作網站改版

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

手機網站建設
主站蜘蛛池模板: 久久精品亚洲乱码伦伦中文 | 欧美黄网站 | 亚洲精品亚洲人成人网 | 中国一级毛片视频 | 久久精品无遮挡一级毛片 | 欧美久久久久久久一区二区三区 | 一级看片免费视频 | 一级欧美一级日韩 | 日本成a人伦片 | 久久久国产一区二区三区 | 日日操夜夜爽 | 欧美另类视频在线 | 久久视频在线 | 九九99久麻豆精品视传媒 | 国产亚洲精品一区二区 | 欧美一级毛片特黄大 | 国产精品爱久久久久久久小 | 米奇精品一区二区三区 | 91福利精品老师国产自产在线 | 国产亚洲欧美一区二区三区 | 亚洲国产成人久久 | 亚洲精品成人7777在线观看 | 三级毛片网站 | 日韩三级小视频 | 免费看成人毛片 | 人操人摸 | 一区二区三区免费看 | 久久精品视频免费观看 | 欧美色视频在线观看 | 中文字幕亚洲一区二区三区 | 男女视频免费看 | 午夜黄色福利视频 | 国产精品免费久久 | 香蕉久久夜色精品国产尤物 | 亚洲精品一区二区三区在线观看 | 久久免费视频网站 | 国产精品久久网 | 亚洲影院手机版777点击进入影院 | 国产成人www免费人成看片 | 美女18一级毛片免费看 | 国产成人精品一区二三区在线观看 |