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开发中常见的需求,掌握多线程编程实战经验对于提升开发效率和系统性能至关重要。