您的位置:首页 > 其它

多线程同步锁实现简单数据的同步输入与输出

2017-04-30 23:21 323 查看

多线程同步锁实现简单数据的同步输入与输出

Resource类

class Resource {
public String name;
public int age;
boolean flag = false;
}


Input类

/**
* Created by Aongi on 2017/4/30.
* Version 1.0
*/
class Input implements Runnable {
private final Resource r;

public Input(Resource r) {
this.r = r;
}

@Override
public void run() {
int a = 0;
//noinspection InfiniteLoopStatement
while (true) {
synchronized (r) {
if (r.flag) {
try {
r.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (a % 2 == 0) {
r.name = "张三";
r.age = 20;
} else {
r.name = "李四";
r.age = 22;
}
r.flag = true;
r.notify();
}
a++;
}
}
}


Output类

/**
* Created by Aongi on 2017/4/30.
* Version 1.0
*/
class Output implements Runnable {
private final Resource r;

public Output(Resource r) {
this.r = r;
}

@Override
public void run() {
//noinspection InfiniteLoopStatement
while (true) {
synchronized (r) {
if (!r.flag) {
try {
r.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(r.name + "——————" + r.age);
r.flag = false;
r.notify();
}
}
}
}


最后来个Test类

/**
* Created by Aongi on 2017/4/30.
* Version 1.0
*/
class Test {
//main方法
public static void main(String[] args) {
Resource r = new Resource();
Input input = new Input(r);
Output output = new Output(r);

Thread in = new Thread(input);
Thread out = new Thread(output);

in.start();
out.start();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐