日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

线程池2--创建线程

發布時間:2025/4/14 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程池2--创建线程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.
1.java四中線程池的使用

java通過Excutors提供四種線程池,分別為:
newCacheThreadPool():創建一個可緩存的線程池,如果線程池大小超過處理需要,可靈活回收空閑線程,若無空閑線程,則新建線程。
newFixedThreadPool():創建一個定長的線程池,可控制線程最大并發數,超出的線程會在隊列中排隊。
newScheduledThreadPool():創建一個定長線程池,支持定時及周期性任務執行。
newSingleThreadExecutor():創建一個單線程化的線程池,它只會用唯一的工作線程來執行任務,保證所有的任務按照制定的順序(FIFO,LIFO,優先級)執行。

?

二.
public static void main(String[] args) {

// 1.線程池為無限大,當執行第二個任務時第一個任務已經完成,會復用執行第一個任務的線程,而不用每次新建線程。
//
// ExecutorService cachedThreadPool = Executors.newCachedThreadPool();
//
// for (int i = 0; i < 10; i++) {
//
// final int index = i;
//
// try {
// Thread.sleep(index * 100);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
//
// cachedThreadPool.execute(new Runnable() {
//
// @Override
// public void run() {
// System.out.println(index);
// System.out.println(cachedThreadPool);
// }
//
// });
// }

?

/**
* 2.指定線程池的大小,如果指定線程池大小為5,而請求總數為100,那么前五個的順序一般會是亂的,因為第一次進入線程池的有五個值,池中的五個線程拿到哪個執行哪個,之后
* 哪個線程執行完則繼續按隊列的順序去抓取任務,所以前面的一般是亂的,后面基本會按順序輸入---線程池大小為100,任務有100,后面的基本還在后面,前面的還在前面,因為
* 線程的抓取是按順序去隨機抓取的
*/
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(100);
for (int i = 0; i < 100; i++) {
final int index = i;
fixedThreadPool.execute(new Runnable() {

@Override
public void run() {
try {
System.out.println(index);
Thread.sleep(2000);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
}

// 3.1定時執行 先睡一秒,之后的睡三秒 scheduleAtFixedRate
// ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
// scheduledThreadPool.scheduleAtFixedRate(new Runnable() {
//
// @Override
// public void run() {
//
// System.out.println("delay 3 seconds");
//
// }
// }, 1, 3, TimeUnit.SECONDS);

3.2--睡三秒后執行 schedule
public static void main(String[] args) {

ScheduledExecutorService scheduledThreadPool = Executors.newScheduledThreadPool(5);
scheduledThreadPool.schedule(new Runnable() {
public void run() {
System.out.println("delay 3 seconds");
}
}, 3, TimeUnit.SECONDS);
}


//4.創建單線程
// ExecutorService singleThreadExecutor = Executors.newSingleThreadExecutor();
// for (int i = 0; i < 10; i++) {
// final int index = i;
// singleThreadExecutor.execute(new Runnable() {
//
// @Override
// public void run() {
// try {
// System.out.println(index);
// Thread.sleep(2000);
// } catch (InterruptedException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
// });
// }

?

轉載于:https://www.cnblogs.com/tian666/p/7845282.html

總結

以上是生活随笔為你收集整理的线程池2--创建线程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。