并发编程挑战:Java多线程实例
在Java中,多线程可以通过实现Runnable接口或继承Thread类来创建。以下是一个简单的多线程实例:
- 创建一个任务类(Task),该类将包含我们需要在线程中执行的操作。
public class Task implements Runnable {
private String taskName;
private boolean isCompleted;
public Task(String taskName) {
this.taskName = taskName;
this.isCompleted = false;
}
@Override
public void run() {
// 在这里,你可以执行任何需要在线程中运行的操作。
System.out.println("Task: " + taskName + ", Starting...");
try {
// 模拟一个耗时的任务
Thread.sleep(2000); // 2秒的延迟
System.out.println(taskName + ": Completed!");
isCompleted = true;
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("Task: " + taskName + ", Interrupted.");
isCompleted = true; // 任务即使中断,也认为完成
}
}
}
- 创建一个线程类(ThreadExample),用于创建和启动多个线程。
public class ThreadExample {
public static void main(String[] args) {
// 创建一个任务列表
List<Task> tasks = new ArrayList<>();
tasks.add(new Task("Task 1"))); // 添加第一个任务
// 启动所有任务
for (Task task : tasks) {
new Thread(task).start(); // 创建新线程并启动
}
System.out.println("All threads started. Waiting for completion...");
// 等待所有任务完成
while (!tasks.stream().allMatch(Task::isCompleted))) {
try {
Thread.sleep(100); // 每秒检查一次
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("All tasks completed. Exiting main().");
}
}
这个例子中,我们创建了一个任务类Task
,并创建了一个线程类ThreadExample
。在主方法中,我们创建了一个任务列表,并启动了所有任务。最后,我们在主线程中等待所有任务完成,然后退出程序。
还没有评论,来说两句吧...