主线程中开启10个线程 ,在10个线程结束后输出一句话,java编码实现
时间: 2024-05-04 17:15:36 浏览: 9
可以使用CountDownLatch来实现,代码如下:
```
import java.util.concurrent.CountDownLatch;
public class MainThread {
public static void main(String[] args) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(10); // 初始化CountDownLatch,计数器为10
for (int i = 0; i < 10; i++) {
new Thread(() -> {
// 线程执行任务
System.out.println(Thread.currentThread().getName() + " 执行任务");
latch.countDown(); // 计数器减1
}).start();
}
latch.await(); // 等待计数器归0
System.out.println("所有线程已完成任务");
}
}
```
当所有线程执行完任务后,程序会输出“所有线程已完成任务”。
相关问题
写一个java线程池的简单应用,主线程需要等待子线程执行完成后输出一句话
可以这样编写:public class SimpleThreadPool {
public static void main(String[] args) {
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 创建 Runnable 对象任务
Runnable task = () -> {
System.out.println("子线程正在执行……");
};
// 提交任务到线程池
executor.execute(task);
// 关闭线程池
executor.shutdown();
// 等待子线程执行完毕
while (!executor.isTerminated()) {
}
System.out.println("子线程执行完成!");
}
}
Java写个线程,放后台10分钟后输出一句话
可以使用Java中的Timer和TimerTask类来实现这个功能。具体实现步骤如下:
1. 创建一个继承自TimerTask的子类,在run()方法中编写需要执行的任务,即输出一句话。
2. 在主线程中创建一个Timer对象,并使用schedule()方法来安排需要执行的任务。schedule()方法有两个参数,第一个参数为TimerTask对象,第二个参数为延迟时间(单位:毫秒)。
3. 将主线程挂起10分钟,可以使用Thread.sleep()方法实现。
下面是示例代码:
```java
import java.util.Timer;
import java.util.TimerTask;
public class BackgroundTask {
public static void main(String[] args) throws InterruptedException {
Timer timer = new Timer();
timer.schedule(new MyTask(), 10 * 60 * 1000); // 延迟10分钟执行任务
Thread.sleep(10 * 60 * 1000); // 挂起主线程10分钟
}
}
class MyTask extends TimerTask {
public void run() {
System.out.println("10分钟后输出的内容");
}
}
```
在上面的代码中,MyTask类继承了TimerTask类,重写了run()方法,输出一句话。在主线程中,创建了一个Timer对象,调用schedule()方法安排任务执行,并将主线程挂起10分钟。当10分钟到达后,MyTask中的run方法会被执行,输出一句话。