使用Java多线程的困惑实例
在多线程编程中,可能会遇到一些难以理解或出现问题的场景。以下是一个简单的Java多线程困惑实例:
代码示例:
public class ThreadPoolExample {
private int count = 10; // 定义需要线程处理的任务数量
public void startThreads() throws InterruptedException {
// 创建一个固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(count);
// 提交任务到线程池,每个任务是一个Runnable对象
for (int i = 0; i < count; i++) {
Runnable task = new WorkerThread("Task-" + i);
executor.execute(task); // 将任务提交给线程池执行
}
// 关闭线程池释放资源
executor.shutdown();
}
// 工作线程类
private class WorkerThread implements Runnable {
private String taskName;
public WorkerThread(String taskName) {
this.taskName = taskName;
}
@Override
public void run() {
System.out.println("Task: " + taskName);
try {
Thread.sleep(500); // 模拟任务执行时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws InterruptedException {
ThreadPoolExample example = new ThreadPoolExample();
example.startThreads(); // 启动线程池
}
}
在这个例子中,我们创建了一个固定大小的线程池来执行10个任务。每个任务都是一个运行时Runnable
对象。
当我们在main
方法中调用startThreads()
时,会启动线程池,所有提交的任务都会被线程池中的线程并发处理。
还没有评论,来说两句吧...