import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ThreadPoolExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 0; i< 10; i++) {
Runnable task = new WorkerThread("Task " + i);
executor.execute(task);
}
executor.shutdown();
while (!executor.isTerminated()) {
// 等待所有任务完成
}
System.out.println("所有任务已完成");
}
}
class WorkerThread implements Runnable {
private String taskName;
public WorkerThread(String taskName) {
this.taskName = taskName;
}
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + " 开始执行 " + taskName);
try {
// 模拟任务执行时间
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + " 完成任务 " + taskName);
}
}以上是一个简单的多线程编程的例子,利用Java的线程池实现了任务的并行执行。在主函数中,通过ExecutorService创建了一个固定大小为5的线程池,然后循环提交了10个任务给线程池执行。
WorkerThread类实现了Runnable接口,定义了任务的执行逻辑。每个任务在执行前输出开始执行的提示,然后模拟任务执行时间,最后输出任务完成的提示。
为了保证所有任务执行完毕,主线程在执行完循环提交任务的操作后,调用shutdown()方法关闭线程池,并使用isTerminated()检测线程池是否终止。在所有任务完成后,输出所有任务已完成的提示。
通过合理使用线程池,可以提高程序的性能和响应速度,避免过多线程的创建和销毁造成的资源浪费。多线程编程是Java开发中常见的需求,掌握多线程编程实战经验对于提升开发效率和系统性能至关重要。