2016 - 2024

感恩一路有你

Java多线程等待唤醒机制实例

浏览量:2329 时间:2024-04-15 20:20:18 作者:采采

在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中多线程的等待唤醒机制的实陵应用方式及效果。

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。