java.定义一个子任务类,实现Runnable接口: 1.1 定义一个ArrayList集合对象,用于存放子线程的名称; 1.2 定义一个变量,用来记录正在运行的线程个数; 1.3定义一个构造方法,把进程总数作为参数进来; 1.4 在构造方法中,给正在运行的线程个数赋值为线程总数; 1.5 重写Runnable接口的run方法 ; 1.6 使用同步代码块,保证同一时间只能向集合中添加一个线程名称; 1.7 正在运行的线程个数减1; 1.8 所有的线程运行结束后遍历集合,打印所有线程的名称;
时间: 2023-06-14 21:03:09 浏览: 85
以下是Java代码实现:
```
import java.util.ArrayList;
public class SubTask implements Runnable {
private ArrayList<String> threadNames;
private int runningThreads;
public SubTask(int totalThreads) {
this.threadNames = new ArrayList<>();
this.runningThreads = totalThreads;
}
@Override
public void run() {
synchronized (threadNames) {
threadNames.add(Thread.currentThread().getName());
}
runningThreads--;
if (runningThreads == 0) {
for (String name : threadNames) {
System.out.println(name);
}
}
}
}
```
在主程序中,我们可以这样来启动多个子线程:
```
public static void main(String[] args) {
int totalThreads = 5;
SubTask subTask = new SubTask(totalThreads);
for (int i = 0; i < totalThreads; i++) {
Thread thread = new Thread(subTask);
thread.start();
}
}
```
运行结果会输出所有子线程的名称。需要注意的是,由于多线程的并发特性,每次运行的结果可能会有所不同。
阅读全文