要求: 实现两个线程 一个线程打印“乒”一个线程打印“乓” 它们之间是互相叫醒对方。 打印结果为: 乒乓 乒乓 乒乓 乒乓
注(别拿生产者与消费者例子出来)。
注(别拿生产者与消费者例子出来)。
解决方案 »
- java如何防止两个人同时更改数据库,造成覆盖?
- java/ldap
- 简单的计算器程序 帮改一下啊!!
- 在Appl用里面用什么命令可以关闭Applet?
- 关于系统启动时多线程的问题,高手进来看看啊!
- 做企业MIS系统软件用什么开发最好?java合适吗
- 请教各位大侠
- java在windows和sorlaris下的不同表现~~,帮忙看看
- 升级JBUILDER5的问题,帮帮忙
- 请介绍一下那里有讲native 方法的详细文档!或者那位同志给提示一下它的用法
- 怎么直接双击运行用Java写好的程序??
- java 里面 当我们去链接一个远程的地址的时候,ip地址存在,但是端口不存在,就会出现超时,这个程序怎么写?
public class Test {
public static void main(String[] args) throws Throwable {
Object locker = new Object();
new TestThread("乒", locker).start();
new TestThread("乓", locker).start();
} static class TestThread extends Thread {
static boolean flag = true;
Object locker;
publit TestThread(String name, Object locker) {
super(name);
this.locker = locker;
}
public void run() {
while (true) {
synchronized(locker) {
try {
if (getName().equals("乒")) {
if (!flag) {
locker.wait();
}
} else {
if (flag) {
locker.wait();
}
}
flag = !flag;
System.out.print(getName());
locker.notifyAll();
} catch (Exception e) {
e.printStackTrace();
System.exit(-1);
}
}
}
}
}
}
{
Object locker;
public PingPangGame(String name, Object locker)
{
super(name);
this.locker = locker;
}
public void run()
{
while (true)
{
synchronized (locker)
{
try
{
locker.notifyAll();
locker.wait();
System.err.print(getName());
locker.wait(1000);
} catch (Exception e)
{
e.printStackTrace();
System.exit(-1);
}
}
}
}
public static void main(String[] args) throws Throwable
{
Object locker = new Object();
new PingPangGame("乒", locker).start();
new PingPangGame("乓", locker).start();
}
}