欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

java核心線程和非核心線程

王梓涵1年前8瀏覽0評論

Java中的多線程編程需要了解核心線程和非核心線程的概念。在Java中,線程分為兩種類型:核心線程和非核心線程。

核心線程是指直接由Thread類或者ThreadPoolExecutor類創建的線程,這些線程通常執行任務隊列中的任務,并且不會被回收。當任務隊列中沒有任務時,核心線程會阻塞,等待新的任務產生。如果創建ThreadPoolExecutor時使用了ThreadPoolExecutor的預初始化機制,核心線程會一直存在,甚至在沒有任務時也不會被回收。

public class CoreThreadDemo {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i< 10; i++) {
executorService.execute(new Task());
}
executorService.shutdown();
}
}
class Task implements Runnable {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + ": hello world");
}
}

非核心線程也稱為輔助線程,這些線程是在任務隊列中等待任務時動態創建的,當任務隊列滿時,會增加非核心線程來執行任務。當任務完成后,非核心線程會進行回收或者保留一段時間,以備重用。如果非核心線程在指定時間內沒有執行新任務,則會被回收。

public class NonCoreThreadDemo {
public static void main(String[] args) {
ExecutorService executorService = new ThreadPoolExecutor(
5, 10, 1L, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(15), Executors.defaultThreadFactory(), new ThreadPoolExecutor.AbortPolicy());
for (int i = 0; i< 20; i++) {
executorService.execute(new Task());
}
executorService.shutdown();
}
}

在實際應用中,根據任務類型和業務需求來合理分配核心線程數和非核心線程數,以達到最優的性能效果。