多线程 小程序
2016-09-08 10:26
399 查看
package com.xmjr.test;
public class Banyungong implements Runnable {
private Computer computer = null;
public Banyungong(Computer computer) {
this.computer = computer;
}
@Override
public void run() {
for (int i = 0; i < 50; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
computer.get();
}
}
}
package com.xmjr.test;
public class Computer {
private String shubiao = "shubiaoA";
private String zhuji = "zhujiA";
private String jianpan = "jianpanA";
private boolean flag = false;
public synchronized void get() {
if (flag) {
try {
super.wait();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(getZhuji() + "-->" + getShubiao() + "-->" + jianpan);
flag = true;
super.notify();
}
/**
* @return the jianpan
*/
public String getJianpan() {
return jianpan;
}
/**
* @return the shubiao
*/
public String getShubiao() {
return shubiao;
}
/**
* @return the zhuji
*/
public String getZhuji() {
return zhuji;
}
public synchronized void set(String shubiao, String jianpan, String zhuji) {
if (!flag) {
try {
super.wait();
} catch (Exception e) {
e.printStackTrace();
}
}
setJianpan(jianpan);
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
setShubiao(shubiao);
setZhuji(zhuji);
flag = false;
super.notify();
}
/**
* @param jianpan
* the jianpan to set
*/
public void setJianpan(String jianpan) {
this.jianpan = jianpan;
}
/**
* @param shubiao
* the shubiao to set
*/
public void setShubiao(String shubiao) {
this.shubiao = shubiao;
}
/**
* @param zhuji
* the zhuji to set
*/
public void setZhuji(String zhuji) {
this.zhuji = zhuji;
}
}
package com.xmjr.test;
public class Maker implements Runnable {
private Computer computer = null;
public Maker(Computer computer) {
this.computer = computer;
}
@Override
public void run() {
boolean b = false;
for (int i = 0; i < 50; i++) {
if (b) {
computer.set("鼠标a" + i, "键盘a" + i, "主机a" + i);
b = false;
} else {
computer.set("鼠标b" + i, "键盘b" + i, "主机b" + i);
b = true;
}
}
}
}
package com.xmjr.test;
public class Test {
public static void main(String[] args) {
Computer computer = new Computer();
Maker maker = new Maker(computer);
Banyungong ban = new Banyungong(computer);
Thread threadMaker = new Thread(maker);
Thread threadBan = new Thread(ban);
threadMaker.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
threadBan.start();
}
}
public class Banyungong implements Runnable {
private Computer computer = null;
public Banyungong(Computer computer) {
this.computer = computer;
}
@Override
public void run() {
for (int i = 0; i < 50; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
computer.get();
}
}
}
package com.xmjr.test;
public class Computer {
private String shubiao = "shubiaoA";
private String zhuji = "zhujiA";
private String jianpan = "jianpanA";
private boolean flag = false;
public synchronized void get() {
if (flag) {
try {
super.wait();
} catch (Exception e) {
e.printStackTrace();
}
}
try {
Thread.sleep(300);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(getZhuji() + "-->" + getShubiao() + "-->" + jianpan);
flag = true;
super.notify();
}
/**
* @return the jianpan
*/
public String getJianpan() {
return jianpan;
}
/**
* @return the shubiao
*/
public String getShubiao() {
return shubiao;
}
/**
* @return the zhuji
*/
public String getZhuji() {
return zhuji;
}
public synchronized void set(String shubiao, String jianpan, String zhuji) {
if (!flag) {
try {
super.wait();
} catch (Exception e) {
e.printStackTrace();
}
}
setJianpan(jianpan);
try {
Thread.sleep(500);
} catch (Exception e) {
e.printStackTrace();
}
setShubiao(shubiao);
setZhuji(zhuji);
flag = false;
super.notify();
}
/**
* @param jianpan
* the jianpan to set
*/
public void setJianpan(String jianpan) {
this.jianpan = jianpan;
}
/**
* @param shubiao
* the shubiao to set
*/
public void setShubiao(String shubiao) {
this.shubiao = shubiao;
}
/**
* @param zhuji
* the zhuji to set
*/
public void setZhuji(String zhuji) {
this.zhuji = zhuji;
}
}
package com.xmjr.test;
public class Maker implements Runnable {
private Computer computer = null;
public Maker(Computer computer) {
this.computer = computer;
}
@Override
public void run() {
boolean b = false;
for (int i = 0; i < 50; i++) {
if (b) {
computer.set("鼠标a" + i, "键盘a" + i, "主机a" + i);
b = false;
} else {
computer.set("鼠标b" + i, "键盘b" + i, "主机b" + i);
b = true;
}
}
}
}
package com.xmjr.test;
public class Test {
public static void main(String[] args) {
Computer computer = new Computer();
Maker maker = new Maker(computer);
Banyungong ban = new Banyungong(computer);
Thread threadMaker = new Thread(maker);
Thread threadBan = new Thread(ban);
threadMaker.start();
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
threadBan.start();
}
}
相关文章推荐
- 多线程Java程序中常见错误的巧处理
- 用VB编写异步多线程下载程序
- 【推荐实例】一个典型的多线程的程序
- [原创] Windows Forms 实现安全的多线程详解(附带程序代码示例)
- 多线程WIN32程序如何检查死锁(三)-使用Petri网络来表示多线程应用程序
- Windows Forms 实现安全的多线程详解(附带程序代码示例) [zz]
- 一个控制台程序中的日志产生程序(运用多线程)
- VS2005多线程程序在IDE下调试的一个问题
- 多线程WIN32程序如何检查死锁(一)——死锁概述
- 在.NET客户端程序中应用多线程
- Java程序中的多线程
- 编写多线程网络检测程序的简单实现
- 用VB编写异步多线程下载程序
- 在.NET客户端程序中应用多线程
- 在WEB程序中轻松执行计划任务(多线程)
- JScript.NET建立多线程程序示例。
- Java 程序中的多线程
- 多线程的聊天室程序的服务器端完成
- delphi多线程程序示例(与.net一样简单)
- C++ Builder 编写多线程下载程序