<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. java語言

    java線程池框架解析方法

    時間:2025-05-04 15:06:56 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)

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

    java線程池框架解析09-11

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

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

    Java 5線程池使用07-28

    Java線程同步的方法05-27

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

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

    Java多線程通信方法09-03

    Java實現多線程的方法11-10

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人