用Java写1、编写一个多线程程序实现如下功能、线程A 和线程B分别在屏幕上显示信息“Astart “B start” 后 调用wait 等待: 线程C 开始后调用 sleep 休眼一段时间,然后调用 notifvall,使线程 ^ 和线程 B 继续运行。线程 A 和线程 B 恢复运行后输出信息 “A END”“B END”后结束,线程C 在判断线程 A 线程 B 结束后,自己也结束运行.
时间: 2024-02-01 10:02:32 浏览: 86
以下是Java多线程程序的实现:
```java
public class ThreadDemo {
public static void main(String[] args) {
Object lock = new Object();
Thread threadA = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("A start");
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("A END");
}
});
Thread threadB = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("B start");
synchronized (lock) {
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("B END");
}
});
Thread threadC = new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock) {
lock.notifyAll();
}
while (true) {
if (!threadA.isAlive() && !threadB.isAlive()) {
break;
}
}
System.out.println("C END");
}
});
threadA.start();
threadB.start();
threadC.start();
}
}
```
在这个程序中,我们先定义了一个共享对象 lock 作为多个线程之间的同步锁。然后创建了三个线程:threadA、threadB 和 threadC。其中 threadA 和 threadB 分别输出信息“ A start” 和“ B start”,然后调用 lock.wait() 等待。线程C 调用 Thread.sleep() 休眠5秒钟,然后调用 lock.notifyAll(),唤醒等待的线程 A 和线程 B。最后在线程C 中使用 while 循环判断线程 A 和线程 B 是否都已经运行结束,如果是,则输出信息“ C END”并结束运行。
需要注意的是,在多线程编程中,我们需要利用 synchronized 和 wait、notify、notifyAll 等方法来进行线程之间的同步,避免出现竞态条件和死锁等问题。
阅读全文