一、多執行緒
1、什麼是多執行緒?
執行緒是作業系統排程的最小單元,在乙個程序裡可以建立多個執行緒,這些執行緒擁有各自的計數器、堆疊和區域性變數等屬性,並且能夠訪問共享的記憶體變數。處理器在多執行緒中高速切換,達到「同時執行」的效果。
2、多執行緒的建立方式
繼承thread類
實現runnable介面,重寫run()方法
實現callable介面,重寫call方法
3、執行緒的啟動方式
/**
* 1、繼承thread
*/public void createbythread()
/*** 2、實現runnable
*/public void createbyrunnable()
/*** callable方式
*/public string createbycallable() throws executionexception, interruptedexception
4、執行緒有什麼狀態
5、執行緒如何終止
二、執行緒池
1、什麼是執行緒池?
執行緒池管理多個執行緒的建立以及銷毀,可以預先的建立多個執行緒,將提交上來的任務合理分配給執行緒執行。執行緒池可以降低資源消耗,提高響應速度以及提高執行緒的可管理性。
2、幾種執行緒池的建立
//建立乙個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活**空閒執行緒(儲存60s),若無可**,則新建執行緒。
executorservice executorservice = executors.newcachedthreadpool();
//建立乙個定長線程池,可控制線程最大併發數,超出的執行緒會在佇列中等待。
executorservice executorservice2 = executors.newfixedthreadpool(2);
// 建立乙個定長線程池,支援定時及週期性任務執行。
executorservice executorservice3 = executors.newscheduledthreadpool(1);
//建立乙個單執行緒化的執行緒池,它只會用唯一的工作執行緒來執行任務,保證所有任務按照指定順序(fifo, lifo, 優先順序)執行。
executorservice executorservice4 = executors.newsinglethreadexecutor();
3、執行緒池的使用
呼叫執行器executors建立執行緒池
呼叫submit()或者execute()方法,傳入執行緒物件
當不需要執行執行緒任務時,呼叫shutdown關閉執行緒池
system.out.println("*****====執行緒池的使用*****====");
//submit底層呼叫execute方法執行任務
executorservice.submit(new testthread());
//傳入runnable
executorservice.execute(new testrunnable());
//傳入callable 並接收執行緒返回值
futurefuture1 = executorservice.submit(new testcallable());
system.out.println("執行緒池方式啟動callable結果:"+future1.get());
system.out.println("*****關閉執行緒池*****=");
executorservice.shutdown();
多執行緒基本概念
什麼是程式 為了完成某項特定的任務,使用某種語言,編寫一組指令的集合 什麼是程序 是乙個正在進行的程式 什麼是執行緒 在乙個程序中,執行的一套功能流程,稱為執行緒 在乙個程序中,執行的多套功能流程,稱為多執行緒 多執行緒程式的優點 1 降低資源消耗。通過重複利用已建立的執行緒降低執行緒建立和銷毀造成...
多執行緒 基本概念
多執行緒和高併發是身為開發人員高階中一直是繞不開的話題,為此專門學習了下,做下總結,作為自己的備忘錄。1.什麼是執行緒 執行緒是作業系統中能夠進行運算排程的最小單位,是程序中的實際運作單位。執行緒本身有乙個供程式執行時的堆疊,同類的多個 執行緒共享一塊記憶體空間。乙個執行緒的生存週期 新建狀態 就緒...
多執行緒基本概念
執行緒同步的真實意思和字面意思恰好相反。執行緒同步的真實意思,其實是 排隊 幾個執行緒之間要排隊,乙個乙個對共享資源進行操作,而不是同時進行操作。因此,關於執行緒同步,需要牢牢記住的第一點是 執行緒同步就是執行緒排隊。同步就是排隊。執行緒同步的目的就是避免執行緒 同步 執行。這可真是個無聊的繞口令。...