Java 學習筆記---Executor框架
Executor | 最基本的執行緒池介面。 |
---|---|
ExecutorService | 執行緒介面的擴充套件 |
Executors | 建立各種需要型別的執行緒池 |
ThreadPoolExecutor | 繼承AbstractExecutorService 實現ExecutorService 方法 |
具體如下圖
使用執行緒池好處:
1、在高併發的時候,降低峰值,避免阻塞,影響效能,最大案例就是京東某年 某次活動的時候,伺服器直接罷工。增加伺服器和延遲峰值,延遲某些操作即能延遲的 就延遲操作,這兩個方面可以緩解高併發問題。
2、統一化管理的優點他都有,就是減少資源的建立 銷燬時間,資源的複用
一、Executor
基本的介面類,可以執行runable的實現類。把執行緒加入佇列的過程。
public interface Executor {
void execute(Runnable command);
}
案例:
public class TaskExecutionWebServer {
//設定執行緒數量的界限
private static final int MTHREDS = 100;
//建立一個固定長度的執行緒池。每次提交一個就建立一個,直至最大執行緒數量。
private static final Executor exec = Executors.newFixedThreadPool(MTHREDS);
public static void main(String[] args) throws IOException {
ServerSocket socket = new ServerSocket(8080);
while (true) {
final Socket connection = socket.accept();
Runnable taskRunnable = new Runnable() {
@Override
public void run() {
// handleRequest(connection);
}
};
//新增到執行緒池,執行緒佇列,等待執行。
exec.execute(taskRunnable);
}
}
}
二、ExecutorService
繼承Executor 介面,擴充套件了Future等,方法。可以是執行緒單向執行即建立->呼叫->執行->結束。使用狀態不可逆行。 可以新增callable執行緒方法。
public interface ExecutorService extends Executor {
void shutdown();
List<Runnable> shutdownNow();
boolean isShutdown();
boolean isTerminated();
boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException;
.....
}
三 Executors
工具類:,對執行緒池的實現輔助。提供執行緒池的建立。
public static ExecutorService newFixedThreadPool(int nThreads)
public static ExecutorService newSingleThreadExecutor()
public static ExecutorService newCachedThreadPool()
public static ScheduledExecutorService newScheduledThreadPool(int corePoolSize)
四、ThreadPoolExecutor
執行緒池類,對執行緒池的流程的關鍵類,繼承AbstractExecutorService 類。
public abstract class AbstractExecutorService implements ExecutorService {
}
public class ThreadPoolExecutor extends AbstractExecutorService {
}
五、CallBack
/*
java.util.concurrent.Callable<Object>
A task that returns a result and may throw an exception. Implementors define a single method with no arguments called call.
The Callable interface is similar to java.lang.Runnable, in that both are designed for classes whose instances are potentially executed by another thread. A Runnable, however, does not return a result and cannot throw a checked exception.
The Executors class contains utility methods to convert from other common forms to Callable classes.
See Also:
Executor
*/
/**
給的解釋就是相對於runnable + 返回
即獲取執行緒執行的過程。
*/
class CallBackDemo{
private static final int MTHREDS = 100;
private static final ExecutorService exec = Executors.newFixedThreadPool(MTHREDS);
final ArrayList<Object> infoList=new ArrayList<Object>();
public void test(){
Callable<Object> tasks=new Callable<Object>() {
@Override
public Object call() throws Exception {
return null;
}
};
Future<Object> future= exec.submit(tasks);
}
}
相關推薦
Java 學習筆記---Executor框架
Executor 最基本的執行緒池介面。 ExecutorService 執行緒介面的擴充套件 Executors 建立各種需要型別的執行緒池 ThreadPoolExecutor 繼承AbstractExec
Java學習筆記——SpringBoot框架
註解: @SpringbootApplication:這個註解標註到某個類上表明這個類是Springboot的主配置類,是Springboot應用的主程式類和主入口,是一個組合註解。 @SpringBootConfiguration:表明該
Java學習筆記——SpringMVC框架
一、註解 @RequestMapping:此註解可以放在方法和類上面,用於用於對映url到控制器類或一個特定的處理程式方法,若用在類上,則此類所有處理請求的方法都以該地址作為父路徑。還有各種屬性 /** * @RequestMapping有8個屬性 * value:訪問路徑,若只
java學習筆記:集合框架的工具類Collections
Collections:裡面定義的都是一些操作collection物件的靜態方法 List list=new ArrayList(); … 1.自然排序: Collections.sort(list); 2.倒序排序:Collections.sort(list,
Java學習筆記——淺談數據結構與Java集合框架(第一篇、List)
技術分享 emp 鏈表 adc 下標 -c nod nal integer 橫看成嶺側成峰,遠近高低各不同。不識廬山真面目,只緣身在此山中。 ——蘇軾 這一塊兒學的是雲裏霧裏,咱們先從簡單的入手。逐漸的撥開迷霧見太陽。本次先做List集合的三
Java學習筆記29(集合框架三:泛型)
出了 oar sta package 獲取 demo 強制 lis oid 泛型的概念: 簡單地講,就是同一個方法(類),可以接受不同的數據類型並運行得到相對應的結果,不會出現安全問題 上一篇有一段這樣的代碼: 沒有定義集合類型、叠代器類型 package demo;
Java學習筆記30(集合框架四:List接口)
package int 集合框架 初始 tro color arraylist 原理 void List接口繼承自Collection接口 具有重要的三大特點: 1.有序集合:存入和取出的順序一致 2.此接口的用戶可以對列表中每個元素插入位置精確的控制:可以通過索引操作 3
Java學習筆記31(集合框架五:set接口、哈希表的介紹)
ins gpo 自己 static 增強for {} ati 兩個 公式 set接口的特點: 1.不包含重復元素 2.set集合沒有索引,只能用叠代器或增強for循環遍歷 3.set的底層是map集合 方法和Collection的方法基本一樣 set接口的實現類Hash
Java學習筆記32(集合框架六:Map接口)
hashtable code rri 輸出 clas bsp pan ons spa Map接口與Collection不同: Collection中的集合元素是孤立的,可理解為單身,是一個一個存進去的,稱為單列集合 Map中的集合元素是成對存在的,可理解為夫妻,是一對一對存
.net轉java 學習筆記 (五) 使用eclipse 搭建 ssh框架( struts spring hibernate )
註入 mage 面向切面 但是 模式 nbsp gen pro jdbc ssh為 struts+spring+hibernate的一個集成框架,是目前較流行的一種Web應用程序開源框架 struts :是一個基於MVC設計模式的Web應用框架,struts類似.net
集合框架ArrayList+JAVA學習筆記-DAY16
15.01_集合框架(物件陣列的概述和使用) A:案例演示 需求:我有5個學生,請把這個5個學生的資訊儲存到陣列中,並遍歷陣列,獲取得到每一個學生資訊。 Student[] arr = new Student[5];
集合框架ArrayList、List、Vector+JAVA學習筆記-DAY15
15.01_集合框架(物件陣列的概述和使用) A:案例演示 需求:我有5個學生,請把這個5個學生的資訊儲存到陣列中,並遍歷陣列,獲取得到每一個學生資訊。 Student[] arr = new Student[5];
Java 學習筆記 兩大集合框架Map和Collection
兩大框架圖解 Collection介面 由第一張圖,我們可以知道,Collection介面的子介面有三種,分別是List介面,Set介面和Queue介面 List介面 允許有重複的元素,元素按照新增的順序進行排序 介面方法 void add(int index,Obj
JAVA學習筆記整理六(類集框架)
public class SetTest { public static void main(String[] args) { // hashSet Set hashSet = new HashSet(); hashSet.add("A"); hashSet.add("A"
Java 基礎學習筆記 —— 集合框架中的Map
引言 前兩篇文章我們介紹了集合中的列表和佇列,接下來要介紹的也是一個使用非常廣泛的類——Map。 Map儲存了一對對的鍵值對映關係,每一個鍵在Map中都是唯一的。Map預設使用Object.equals來判斷是否包含某個鍵,所以我們要儘量避免使用equals
Java學習筆記37:集合框架實現併發修改
import java.util.List; import java.util.ArrayList; import java.util.ListIterator; public class Demo1_Collection { //集合的遍歷 //判斷有沒有”word"元素,如果有,新
Java 基礎學習筆記 —— 集合框架中的Set
引言 繼上篇文章講過了Java中的Map之後,接下來我們會關注另外一種集合型別——Set。 Set直譯就是集合的意思,代表中不存在重複元素的一個組合。這個定義與我們上篇文章要中介紹的Map中的key定義一致。在Map中,Key也是唯一的。所以Set也大多包含
Java學習筆記(12)Spring JDBC框架和事務管理
Spring JDBC框架 JDBC框架概述: 在使用普通的 JDBC 資料庫時,就會很麻煩的寫不必要的程式碼來處理異常,開啟和關閉資料庫連線等。但 Spring JDBC 框架負責所有的低層細節,從開始開啟連線,準備和執行 SQL 語句,處理異常,處理
【Java學習筆記】<集合框架>對字串進行長度排序
1 import java.util.Iterator; 2 import java.util.TreeSet; 3 4 public class TreeSetTest { 5 6 public static void main(String[] args) { 7
JAVA學習筆記19——MyBatis框架第二章
接著昨天的MyBatis入門程式來講,今天我們來講一下MyBatis的高階用法,例如動態sql查詢,關聯查詢,整合Spring框架,希望對大家能有所幫助。 1、動態sql 通過mybatis提供的各種標籤方法實現動態拼接sql。 1.1