资源类
public class Student {
// 创建对象
private String name;
private int age;
// 创建标签
private boolean flag;
// 录入数据
public synchronized void set(String name, int age) {
//同步方法
if (this.flag) {
// 如果存在数据, 等待
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 添加数据
this.name = name;
this.age = age;
// 更改标签
this.flag = true;
// 添加了数据后,唤醒
this.notify();
}
//获取数据
public synchronized void get() {
//同步方法
if(!this.flag){
//如果没有数据,则等待
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//有数据就进行处理
System.out.println(this.name + "--" + this.age);
//更改标签
this.flag = false;
//唤醒
this.notify();
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
生产类
public class SetThread implements Runnable {
// 生产者,录入数据
private int x = 0;
// 创建资源对象
private Student s;
public SetThread(Student s) {
this.s = s;
}
public void run() {
// 执行Student中的set类
while (true) {
if (x % 2 == 0) {
s.set("张三", 23);
} else {
s.set("李四", 24);
}
x++;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
消费类
public class GetThread implements Runnable {
// 消费者,处理数据
// 创建资源对象
private Student s;
public GetThread(Student s) {
this.s = s;
}
public void run() {
// 执行Student类中的get方法
while (true) {
s.get();
}
}
}
---------------------
【转载,仅作分享,侵删】
作者:imxlw00
原文:https://blog.csdn.net/imxlw00/article/details/85345820
|
|