奶头挺立呻吟高潮av全片,成人试看120秒体验区,性欧美极品v,A片高潮抽搐揉捏奶头视频

java語言

java線程池框架解析

時間:2025-03-07 19:46:33 java語言 我要投稿

java線程池框架解析

  使用Java中成型的框架來幫助我們開發并發應用即可以節省構建項目的時間,也可以提高應用的性能。以下是小編為大家搜索整理java線程池框架解析,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

  Java對象實例的鎖一共有四種狀態:無鎖,偏向鎖,輕量鎖和重量鎖。原始脫離框架的并發應用大部分都需要手動完成加鎖釋放,最直接的就是使用synchronized和volatile關鍵字對某個對象或者代碼塊加鎖從而限制每次訪問的次數,從對象之間的競爭也可以實現到對象之間的協作。但是這樣手動實現出來的應用不僅耗費時間而且性能表現往往又有待提升。

  一、線程池結構圖

  二、示例

  定義線程接口

  6public class MyThread extends Thread {@Overridepublicvoid run() {System.out.println(Thread.currentThread().getName() + "正在執行");}}

  1:newSingleThreadExecutor

  10ExecutorService pool = Executors. newSingleThreadExecutor();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();//將線程放入池中進行執行pool.execute(t1);pool.execute(t2);pool.execute(t3);//關閉線程池pool.shutdown();

  輸入結果:

  3pool-1-thread-1正在執行pool-1-thread-1正在執行pool-1-thread-1正在執行

  2:newFixedThreadPool

  13ExecutorService pool = Executors.newFixedThreadPool(3);Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();//將線程放入池中進行執行pool.execute(t1);pool.execute(t2);pool.execute(t3);pool.execute(t4);pool.execute(t5);pool.shutdown();

  輸入結果:

  4pool-1-thread-1正在執行pool-1-thread-2正在執行pool-1-thread-1正在執行pool-1-thread-2正在執行

  3 :newCachedThreadPool

  14ExecutorService pool = Executors.newCachedThreadPool();Thread t1 = new MyThread();Thread t2 = new MyThread();Thread t3 = new MyThread();Thread t4 = new MyThread();Thread t5 = new MyThread();//將線程放入池中進行執行pool.execute(t1);pool.execute(t2);pool.execute(t3);pool.execute(t4);pool.execute(t5);//關閉線程池pool.shutdown();

  輸入結果:

  5pool-1-thread-2正在執行pool-1-thread-4正在執行pool-1-thread-3正在執行pool-1-thread-1正在執行pool-1-thread-5正在執行

  4 :ScheduledThreadPoolExecutor

  14ScheduledExecutorService pool = Executors.newScheduledThreadPool(2);pool.scheduleAtFixedRate(new Runnable() {//每隔一段時間就觸發異常 @Override public void run() { //throw new RuntimeException(); System.out.println("================"); }}, 1000, 2000, TimeUnit.MILLISECONDS);pool.scheduleAtFixedRate(new Runnable() {//每隔一段時間打印系統時間,證明兩者是互不影響的 @Override public void run() { System.out.println("+++++++++++++++++"); }}, 1000, 2000, TimeUnit.MILLISECONDS);

  輸入結果:

  4================+++++++++++++++++++++++++++++++++++++++++++++++++++

  三、線程池核心參數

  corePoolSize : 池中核心的線程數

  maximumPoolSize : 池中允許的最大線程數。

  keepAliveTime : 當線程數大于核心時,此為終止前多余的空閑線程等待新任務的最長時間。

  unit : keepAliveTime 參數的時間單位。

  workQueue : 執行前用于保持任務的隊列。此隊列僅保持由 execute方法提交的 Runnable任務。

  threadFactory : 執行程序創建新線程時使用的工廠。

  handler : 由于超出線程范圍和隊列容量而使執行被阻塞時所使用的處理程序。

  ThreadPoolExecutor :Executors類的底層實現。

  3.1 任務排隊機制

  SynchonousQueue: 同步隊列,隊列直接提交給線程執行而不保持它們,此時線程池通常是無界的

  LinkedBlockingQueue: 無界對列,當線程池線程數達到最大數量時,新任務就會在隊列中等待執行,可能會造成隊列無限膨脹

  ArrayBlockingQueue : 有界隊列,有助于防止資源耗盡,一旦達到上限,可能會造成新任務丟失

  注意:

  newSingleThreadExecutor、newFixedThreadPool使用的是LinkedBlockingQueue

  newCachedThreadPool 使用的是 SynchonousQueue

  newScheduledThreadPool使用的是 DelayedWorkQueue

  3.2 線程執行流程

  3.3 線程大小確定:

  cpu密集型: 盡量少開線程,最佳線程數 Ncpu+1

  io密集型:多開線程,2Ncpu

  混合型:根據情況而定,可以拆分成io密集和cou密集

【java線程池框架解析】相關文章:

java線程池框架解析方法10-13

什么是java線程池框架10-02

java線程池框架是什么09-03

Java 5線程池使用07-28

java中通用的線程池實例代碼08-27

JAVA多線程之線程間的通信方式解析07-14

java的多線程09-09

java多線程08-31

Java多線程的線程守護例子06-08

主站蜘蛛池模板: 湟中县| 镶黄旗| 南平市| 汝阳县| 壤塘县| 宁国市| 玛沁县| 克拉玛依市| 平泉县| 郎溪县| 华安县| 鄄城县| 台东市| 呼伦贝尔市| 固始县| 乐至县| 塔城市| 汪清县| 龙口市| 炎陵县| 甘孜县| 汝南县| 宜都市| 丰顺县| 益阳市| 开化县| 鸡东县| 乌拉特前旗| 仪征市| 长丰县| 视频| 新源县| 昭平县| 茶陵县| 图们市| 太湖县| 微博| 新兴县| 东阳市| 格尔木市| 祥云县|