Java多线程等待唤醒机制实例
在Java编程中,多线程的等待唤醒机制是一种重要的同步机制。通过使用wait()、notify()和notifyAll()方法,可以实现线程之间的协调与通信。下面将介绍一个简单的例子来演示Java中多线程等待唤醒机制的应用。
创建学生资源类
首先,我们创建一个`StudentDemo`类作为学生资源类,包含学生的姓名、年龄和一个标识符`flag`。
```java
public class StudentDemo {
String name;
int age;
boolean flag;
}
```
创建设置线程类
接下来,我们定义一个设置线程`SetThread`,实现了`Runnable`接口,用于设置学生的姓名和年龄。
```java
public class SetThread implements Runnable {
private StudentDemo s;
private int x 0;
public SetThread(StudentDemo s) {
this.s s;
}
@Override
public void run() {
while (true) {
synchronized (s) {
if (s.flag) {
try {
s.wait();
} catch (InterruptedException e) {
();
}
}
if (x % 2 0) {
"张三";
21;
} else {
"李四";
18;
}
x ;
s.flag true;
();
}
}
}
}
```
创建获取线程类
然后,我们编写获取线程`GetThread`,也实现了`Runnable`接口,用于获取并打印学生的姓名和年龄。
```java
public class GetThread implements Runnable {
private StudentDemo s;
public GetThread(StudentDemo s) {
this.s s;
}
@Override
public void run() {
while (true) {
synchronized (s) {
if (!s.flag) {
try {
s.wait();
} catch (InterruptedException e) {
();
}
}
( " ---- " );
s.flag false;
();
}
}
}
}
```
注意事项
在使用`synchronized`关键字加锁时,设置线程和获取线程必须使用同一把锁,以确保线程同步的有效性。
运行结果
在运行程序后,我们可以看到输出结果如下:
```
李四 ---- 18
张三 ---- 21
李四 ---- 18
张三 ---- 21
李四 ---- 18
张三 ---- 21
李四 ---- 18
张三 ---- 21
李四 ---- 18
张三 ---- 21
...
```
通过这个例子,我们可以清晰地了解Java中多线程的等待唤醒机制的实陵应用方式及效果。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。