2016 - 2024

感恩一路有你

Java线程池的使用:了解创建线程的方式

浏览量:1341 时间:2024-08-02 08:19:46 作者:采采

在Java中,线程是一个非常重要的概念。但是,在大量的创建线程时,会过度消耗计算机资源。因此,针对比较简单的任务,可以采用线程池的方式限制过度创建线程,从而提高程序的运行效率。Java中提供了许多不同类型的线程池构造类,下面将依次介绍。

一、newFixedThreadPool:创建一个固定线程数的线程池

使用示例代码:

```

package testexecutor;

import ;

import ;

public class TestExecutor {

public static void main(String[] args) {

ExecutorService fixThreadPool(5);

for(int i1;i<5;i ){

final int taski;

fixThreadPool.execute(new Runnable(){

@Override

public void run(){

for(int j1;j<5;j ){

(().getName() " task:" task " times:" j);

}

}

});

}

();

}

}

```

这段代码创建了一个包含五个线程的线程池,并为线程分配任务。由于当所有线程都处于忙碌状态时,新的任务将被放入队列中等待。直到有线程空闲时,才会被取出执行。

二、newCachedThreadPool:创建一个可缓存线程池

使用示例代码:

```

package testexecutor;

import ;

import ;

public class TestExecutor {

public static void main(String[] args) {

ExecutorService cachedThreadPool();

for(int i1;i<100;i ){

final int taski;

cachedThreadPool.execute(new Runnable(){

@Override

public void run(){

for(int j1;j<5;j ){

(().getName() " task:" task " times:" j);

}

}

});

}

();

}

}

```

这段代码创建了一个可缓存的线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。在这个例子中,创建了100个任务,但是由于任务结束后,线程可以被回收再利用,因此这里只创建了20个线程来执行这些任务。

三、newScheduledThreadPool:创建一个定长线程池

使用示例代码:

```

import ;

import ;

import ;

public class TestThreads {

public static void main(String[] args) {

ScheduledExecutorService scheduledThreadPool (5);

(new Runnable() {

public void run() {

("delay 10 seconds");

}

}, 10, );

();

}

}

```

这段代码创建了一个定长线程池,支持定时及周期性任务执行。在这个例子中,创建了一个延迟10秒后执行的线程。

四、newSingleThreadExecutor:创建一个单线程化的线程池

使用示例代码:

```

package testexecutor;

import ;

import ;

public class TestExecutor {

public static void main(String[] args) {

ExecutorService singleThreadExecutor ();

for (int i 0; i < 10; i ) {

final int index i;

singleThreadExecutor.execute(new Runnable() {

public void run() {

try {

(().getName() " task" index);

(200);

} catch (InterruptedException e) {

();

}

}

});

}

();

}

}

```

这段代码创建了一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO、LIFO、优先级)执行。

五、总结

以上就是Java线程池的四种常用构造类的使用方法和相关示例代码。在实际开发中,我们可以根据任务特点,选择合适的线程池来提高程序的运行效率,减小计算机资源的浪费。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。