1. 程式人生 > >Java 學習筆記---Executor框架

Java 學習筆記---Executor框架

Executor 最基本的執行緒池介面。
ExecutorService 執行緒介面的擴充套件
Executors 建立各種需要型別的執行緒池
ThreadPoolExecutor 繼承AbstractExecutorService 實現ExecutorService 方法

具體如下圖
Executor框架類圖

使用執行緒池好處:
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