首頁 >Java >java教程 >Executor多執行緒框架的使用方法(附實例)

Executor多執行緒框架的使用方法(附實例)

不言
不言原創
2018-09-27 14:34:242516瀏覽

這篇文章帶給大家的內容是關於Executor多執行緒框架的使用方法(附實例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

在我們的JDK1.5的時候JAVA推出一款為了更加方便開發的多線程應用而封裝的框架(Executor),相比傳統的Thread類,Executor更加的方便,性能好,更易於管理,而且支援線程池。一般在開發爬蟲的時候為了提供爬蟲的效率,需要使用多線程,而Executor就是一個非常好的選擇。

常用介面:

1)建立固定數目執行緒的執行緒池:

public static ExecutorService newFixedThreadPool(int nThreads)

2)執行一個執行緒

void java.util.concurrent.Executor.execute(Runnable command)

3)查看目前活動執行緒個數

int java.util.concurrent.ThreadPoolExecutor.getActiveCount ()

4)結束掉所有的執行緒

void java.util.concrrent.ExecutorService.shutdonw()

Executor在管理多個執行緒的時候會有效的安排。處理,例如創建的時候線程池裡有10個線程,加入實作線程超過10個Executor會進行有效的佇列阻塞和調度。對於我們開發者開說這是透明的,完全不需要關心它內部是怎麼進行的操作。

實例代碼:

package com.java.executor;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;

public class ExecutorTest {
    private static Integer count = 1; //数量
    
    private static boolean flag = true;//是否执行
    public static void main(String[] args) {
        ExecutorService executorService = Executors.newFixedThreadPool(10);//在连接池中初始化10个线程
        while(flag){
            if(count<=100){
                executorService.execute(new Runnable() {
                    @Override
                    public void run() {
                        System.out.println("执行 : " + count++);
                    }
                });
            }else{
                //判断是否有活动线程
                if(((ThreadPoolExecutor)executorService).getActiveCount()==0){
                    executorService.shutdown();//结束所有线程
                    flag=false;
                    System.out.println("完成操作");
                }
            }
            try {
                Thread.sleep(100);//休息0.1秒
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

這是Executor簡單的使用方式,方便快捷,學習難度底,在這裡我們為什麼要休息0.1秒鐘呢,在上面這段程式碼上我們是沒有加鎖的,如果不休息在這段程式碼上等count大於100的時候,線程還在活動中會導致線程沒有進行關閉,加上線程執行速度的飛快會超過我們需求,在爬蟲爬​​網頁的時候使用這麼塊的速度是很容易封I​​P的。

以上是Executor多執行緒框架的使用方法(附實例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn