java執行緒池和關閉執行緒池中的執行緒
如果執行緒經常喜歡去new的話是不對的,你需要一個池子管理。
newCachedThreadPool 這個一個帶快取的執行緒池,是個可以無限大的執行緒池,新建的執行緒放倒這個池子裡,當執行緒停掉了的時候,下個個執行緒進來,可以複用這個執行緒。
newFixedThreadPool 是個有長度的執行緒池,與上一個不同的是,當執行緒超越某個長度的時候,新進來的執行緒就會排隊。執行緒池的大小最好匹配系統資源。按照系統資源來設定大小最好。
newScheduledThreadPool 可以執行週期性任務的定長執行緒池
newSingleThreadExecutor 任務按照指定順序(FIFO, LIFO, 優先順序)執行
用執行緒池實現昨天寫的那個例子
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
Future future = fixedThreadPool.submit(new Runnable() { @Override public void run() {
new Runnable() {
@Override
public void run() {
/*
* 確保執行緒不斷執行不斷重新整理介面
*/
while (true&&(!Thread.currentThread().isInterrupted())) {
try {
Log.i("tag","執行緒執行中"+Thread.currentThread().getId());
// 每執行一次暫停40毫秒
//當sleep方法丟擲InterruptedException 中斷狀態也會被清掉
Thread.sleep(40 );
} catch (InterruptedException e) {
e.printStackTrace();
//如果丟擲異常則再次設定中斷請求
Thread.currentThread().interrupt();
}
}
}
}
);
//觸發條件設定中斷
future.cancel(true);
相關推薦
java執行緒池和關閉執行緒池中的執行緒
如果執行緒經常喜歡去new的話是不對的,你需要一個池子管理。 newCachedThreadPool 這個一個帶快取的執行緒池,是個可以無限大的執行緒池,新建的執行緒放倒這個池子裡,當執行緒停掉了的時候,下個個執行緒進來,可以複用這個執行緒。 newFixe
Java執行緒狀態和關閉執行緒的正確姿勢
1、執行緒狀態及切換 Java中的執行緒有六種狀態,使用執行緒Thread內的列舉類來實現,如下,我對每個狀態都進行了一定的解釋。 public enum State { /** 表示一個執行緒還沒啟用(即未呼叫start方法)*/ NEW,
執行緒互斥和同步(二 方式)執行緒
執行緒間的同步方法大體可分為兩類:使用者模式和核心模式。顧名思義,核心模式就是指利用系統核心物件的單一性來進行同步,使用時需要切換核心態與使用者態,而使用者模式就是不需要切換到核心態,只在使用者態完成操作。使用者模式下的方法有:原
一個類有兩個方法,其中一個是同步的,另一個是非同步的; 現在又兩個執行緒A和B,請問:當執行緒A訪問此類的同步方法時,執行緒B是否能訪問此類的非同步方法?
一個類有兩個方法,其中一個是同步的,另一個是非同步的;現在又兩個執行緒A和B,請問:當執行緒A訪問此類的同步方法時,執行緒B是否能訪問此類的非同步方法? 答案:可以 驗證 package com.my.test2; public class ClassA { public syn
Qt工作筆記-執行緒池作用之一:限制系統中執行執行緒的數量
一、執行緒池的作用: 執行緒池作用就是限制系統中執行執行緒的數量。 根據系統的環境情況,可以自動或手動設定執行緒數量,達到執行的最佳效果;少了浪費了系統資源,多了造成系統擁擠效率不高。用執行緒池控制執行
讓java程式在後臺一直執行(例如putty關閉後後臺程式繼續執行)
在linux系統下如何使一個程式在後臺一直執行呢?很多人使用&結尾的命令形式,但是如果沒有守護程序的話,即使這樣,在終端關閉時程式也會終止執行。這時候就得使用nohup命令了。 例如,如果在終端中執行java -jar xxx.jar&命令,當終端
利用多執行緒解決Tkinter,在button事件中執行高io,高耗時操作,視窗無響應問題
昨天利用python自己寫了一個微型伺服器,突發奇想用Tkinter寫一個GUI介面,並將監聽開始的函式繫結到其中的一個button上,但是當我點選開始服務button時,視窗立馬陷入無響應狀態。搜尋一番發現,是伺服器函式中的while迴圈阻塞了GUI的響應,同理而言
日誌中每段程式碼執行時間的和不等於整段程式碼執行的總時間
程式碼邏輯: def getInlink() A -> B -> C -> D 在tornado中呼
IIS釋出Web專案的登入介面跳閃一下 登入不進去,本地和伺服器上程式設計環境中執行卻能登入進去
正如標題所說的,程式一切正常,IIS釋出瀏覽網站也能看到,就是輸入賬戶和密碼後,介面跳閃一下卻不跳轉。 解決辦法:檢視賬戶密碼登入連線的資料庫路徑正確不,本地路徑時可將(../換成~/) 當時出現要命的問題是:
並行執行(Callable和Future)一定比序列執行效率高嗎?
在一個程式裡順序呼叫了兩個不相關的方法A和B,A耗時100毫秒,B耗時80毫秒,所以總共耗時180毫秒。 main(){ methodA; methodB; } 因為方法A和B不相關,所以我們可以將程式改造成並行執行,使用Callable和Future配合實現(只討論需要A
IIS釋出Web專案的登入介面跳閃一下 登入不進去,本地和伺服器上程式設計環境中執行卻能登入進去
正如標題所說的,程式一切正常,IIS釋出瀏覽網站也能看到,就是輸入賬戶和密碼後,介面跳閃一下卻不跳轉。解決辦法:檢視賬戶密碼登入連線的資料庫路徑正確不,本地路徑時可將(../換成~/)
JAVA:開啟記事本和關閉記事本
import java.io.IOException; public class 終止程式 { public static void main(String[] args) { Runtime run=Runtime.getRuntime(); //建立操作類
【譯】Go和WebAssembly:在瀏覽器中執行Go程式
在過去很長一段時間裡,Javascript是Web開發人員中的通用語言。如果你想寫一個穩定成熟的 Web 應用程式,用javascript幾乎是唯一的方法。 WebAssembly(也稱為wasm)將很快改變這種情況。使用WebAssembly可以用任何語言編寫Web應用程式。在本文中,我們將瞭解如何編寫G
DB2大資料重一張表複製到另外一張表儲存過程和直接在客戶端中執行
IN PI_PCKBED VARCHAR(32672),IN PI_PCKEND VARCHAR(32672)) BEGIN DECLARE SQL1 VARCHAR(200); DECLARE SQL2 VARCHAR(200); DECLARE SQL3 VARCHAR(200); D
Unity之物件池(單例物件池和泛型物件池)
眾所周知,遊戲開發中記憶體和效能一直是影響使用者遊戲體驗的至關重要的兩個因素,這次說一說物件池的概念。 物件池意義是將遊戲中反覆建立銷燬的物件進行多次利用,從而避免大量物件的銷燬與建立而造成CPU的負
JAVA反射使用例項和class.getResource()得到URL中含有中文和空格亂碼問題
JAVA反射使用例項 package invoke; import java.lang.reflect.Method; public class T1 { public static void main(String[] args) throws Exception {
定時器的實現、java定時器Timer和Quartz介紹與Spring中定時器的配置
欄位 允許值 允許的特殊字元 秒 0-59 , - * / 分 0-59 , - * / 小時 0-23 , - * / 日期 1-31 , - * ? / L W C 月份 1-12 或者 JAN-DEC , - * / 星期 1-7 或者 SUN-SAT , - *
JAVA多執行緒(三) 執行緒池和鎖的深度化
github演示程式碼地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/src/main/java/com/kawa/thread 1.執行緒池 1.1 執行緒池是什麼 Java中的執行緒
Java併發程式設計:4種執行緒池和緩衝佇列BlockingQueue
一. 執行緒池簡介 1. 執行緒池的概念: 執行緒池就是首先建立一些執行緒,它們的集合稱為執行緒池。使用執行緒池可以很好地提高效能,執行緒池在系統啟動時即建立大量空閒的執行緒,程式將一個任務傳給執行緒池,執行緒池就會啟動一
Java——多執行緒基本使用(四) 執行緒組和執行緒池的使用,工廠設計模式的使用
1.執行緒組的概述和使用 Java中使用ThreadGroup來表示執行緒組,它可以對一批執行緒進行分類管理,Java允許程式直接對執行緒組進行控制。 &n