1. 程式人生 > >避免使用執行緒組(thread group)。

避免使用執行緒組(thread group)。

除了執行緒、鎖和監視器之外,執行緒系統還提供了一個基本的抽象,即執行緒組。執行緒組的初衷是作為一種隔離applet(小程式)的機制,當然是出於安全的考慮。但是他們從來沒有真正履行這個承諾,他們的安全價值已經差到根本不在Java安全模型的標準工作中提及的地步。

他們允許你同時把Thread的某些基本功能應用到一組執行緒中。其中有一些基本功能已經被廢棄了,剩下的也很少使用。

具有諷刺意味的是,從執行緒安全性的角度來看,ThreadGroup API非常弱。為了得到一個執行緒組中的活動執行緒列表,你必須呼叫enumerate方法,它有一個數組引數,並且陣列的容量必須足夠大,以便容納所有的活動執行緒。activeCount方法返回一個執行緒組中活動執行緒的數量,但是,一旦這個陣列進行了分配,並傳遞給了enumerate方法,就不保證原先得到的活動執行緒數仍是正確的。如果執行緒數增加了,而陣列太小,enumerate方法就會悄然的忽略掉無法再陣列中容納的執行緒。

列出執行緒組彙總子組的API也有類似的缺陷。雖然通過增加新的方法,這些問題有可能得到修正,但是他們目前還沒有修正,因為執行緒組已經過時了,所以實際上根本沒有必要修正。

總而言之,執行緒組並沒有提供太多有用的功能,而且他們提供的許多功能還是有缺陷的。我們最好把執行緒組看做是一個不成功的試驗,你可以忽略掉他們。如果你正在設計的一個類需要處理執行緒的邏輯組,或許就應該使用執行緒池executor。

相關推薦

避免使用執行thread group

除了執行緒、鎖和監視器之外,執行緒系統還提供了一個基本的抽象,即執行緒組。執行緒組的初衷是作為一種隔離applet(小程式)的機制,當然是出於安全的考慮。但是他們從來沒有真正履行這個承諾,他們的安全價值已經差到根本不在Java安全模型的標準工作中提及的地步。 他們允許你同時

Jmeter系列11- 併發執行Concurrency Thread Group詳解

如果你想從頭學習Jmeter,可以看看這個系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html   Concurrency Thread Group的介紹 Concurrency Thread Group提供了用於配置多個執行緒計劃

執行管理十一處理執行內的不受控制異常

宣告:本文是《 Java 7 Concurrency Cookbook 》的第一章, 作者: Javier Fernández González 譯者:鄭玉婷 處理執行緒組內不受控制異常 對於程式語言來說,一個非常重要的事情是提供管理應用出錯情況的機制。Java 語言, 作為最現代的程式語言,

Java 程序與執行 及多執行實現Thread、Runnable、Callable

程序與執行緒的概念 程序: 作業系統中一個程式的執行週期稱為一個程序。(是程式的一次動態執行,它對應著從程式碼載入,執行至執行完畢的一個完整的過程,是一個動態的實體) windows是一個多程序的作業系統。 執行緒: :一個程式同時執行多個任務。通常,每一個任務就稱為一個執行緒。與程序相

Java併發程式設計2執行中斷含程式碼

使用interrupt()中斷執行緒當一個執行緒執行時,另一個執行緒可以呼叫對應的Thread物件的interrupt()方法來中斷它,該方法只是在目標執行緒中設定一個標誌,表示它已經被中斷,並立即返回。這裡需要注意的是,如果只是單純的呼叫interrupt()方法,執行緒並沒有實際被中斷,會繼續往下執行。

Java多執行學習基礎篇

1. java對執行緒的支援 java對執行緒的支援主要體現在Thread類以及Runable介面上,他們都位於java.lang包下,無論是Thread類還是Runable介面,它們都有public void run()方法,這個run方法為我們提供了執行緒實際工作時的程式碼,換句

【python3】多執行-執行非同步推薦使用

- python3有threading和_thread兩種執行緒寫法,推薦使用threading。 開多執行緒就是為了使用多執行緒的非同步能力來同時執行多個執行緒。 1. threading方法 #!/usr/bin/python3 # 執行緒非同步 import thread

C++11 併發與多執行未完成

從C++11新標準開始,C++語言本身增加了對多執行緒的支援,意味著使用C++可實現多執行緒程式的可移植,跨平臺。 在標準的C++程式中,主執行緒從main()開始執行,我們自己在C++中建立的執行緒,也需要從一個函式開始執行(這個函式叫做初始函式),一旦這個函式執行完

iOS多執行筆記GCD理解

0x00 先上腦圖 0x01 iOS的三種多執行緒技術 1.NSThread 每個NSThread物件對應一個執行緒,量級較輕(真正的多執行緒)2.以下兩點是蘋果專門開發的“併發”技術,使得程式設計師可以不再去關心執行緒的具體使用問題ØNSOperation/NSOperationQueue 面向物件的

C++多執行系列C++11-uniqu_lock

Data 2018/11/12 Add By  WJB 在多執行緒中,有時候會出現一個方法中又一斷或者多段程式碼需要加鎖,但是並非整個方法程式碼加鎖,那麼我們就需要一個靈活的鎖-unique_lock;說明:unique_lock會降低程式碼執行效率,不推薦使用。 我們接

執行管理十二執行工廠建立執行

宣告:本文是《 Java 7 Concurrency Cookbook 》的第一章, 作者: Javier Fernández González 譯者:鄭玉婷 用執行緒工廠建立執行緒 在面向物件程式設計的世界中,工廠模式是最有用的設計模式。它是一個創造模式,還有它的目的是建立一個或幾個類的物件

執行執行者十一執行者分離任務的啟動和結果的處理

宣告:本文是《 Java 7 Concurrency Cookbook 》的第四章,作者: Javier Fernández González     譯者:許巧輝     校對:方騰飛,葉磊 執行者分離任務的啟動和結果的處理 通常,當你使用執行者執行併發任務時,你將會提交 Runnable

執行執行者十二執行者控制被拒絕的任務

宣告:本文是《 Java 7 Concurrency Cookbook 》的第四章,作者: Javier Fernández González     譯者:許巧輝     校對:方騰飛,葉磊 執行者控制被拒絕的任務 當你想要結束執行者的執行,你使用shutdown()方法來表明它的結束。執行

執行同步條件變數

參考:https://blog.csdn.net/qq_37653144/article/details/81988615 https://blog.csdn.net/qq_34328833/article/details/56012780  https://blog.csdn.n

Java執行學習個人筆記

先介紹一下執行緒和程序的概念吧 程序是指一個記憶體中執行的應用程式,每個程序都有自己獨立的一塊記憶體空間,即程序空間或(虛空間)。程序不依賴於執行緒而獨立存在,一個程序中可以啟動多個執行緒。比如在Windows系統中,一個執行的exe就是一個程序。 執行緒在執行過程中

java多執行基礎synchronize關鍵字

基礎知識 執行緒:程序(process)就是一塊包含了某些資源的記憶體區域。作業系統利用程序把它的工作劃分為一些功能單元。 執行緒:程序中所包含的一個或多個執行單元稱為執行緒(thread)。程序還擁有一個私有的虛擬地址空間,該空間僅能被它所包含的執行

程序與執行總結比較全面

1.程序和執行緒 1.1 概述: 程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的一個獨立單位. 執行緒是程序的一個實體,是CPU排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位.執行緒自己基本上不擁有系統資源,只擁有一點在執行中必不

四種執行同步或互斥方式小結

一,什麼是執行緒同步和互斥 同步就是協同步調,按預定的先後次序進行執行。如:你說完,我再說。這裡的同步千萬不要理解成那個同時進行,應是指協同、協助、互相配合。執行緒同步是指多執行緒通過特定的設定(如互

Android小知識-Java多執行相關Lock使用

本篇文章已授權微信公眾號 顧林海 獨家釋出 在JDK1.5中新增ReentrantLock類,效果類似於使用synchronized關鍵字實現執行緒間同步互斥,並且在擴充套件功能上也更加強大,比如具有嗅探鎖定、多路分支通知等功能。看下面ReentrantLock的例項程式碼: public cl

說說windows核心中為什麼要隱藏執行附原始碼

一、論:接著上一篇來談談,程序都能隱藏,單獨隱藏程序中的某一個執行緒幹啥?二、需求:需求源動力,就是有需求,除了正兒八經熱愛喜歡專研的朋友,無利無名、無食而學日不思,真的讓人很尊敬。三、打個比方:當你想要去實現隱藏執行緒的時候你有可能在幹什麼?做一個工具?或者說是學習?通過隱藏執行緒可以更深入理解window