线程同步的简单问题

来源:百度知道 编辑:UC知道 时间:2024/09/20 12:06:25
我已经是照着书打的:
大意是有一个缓冲区buffer,能放一个数据,取数时,不能为空,
不为空时,不能取数.

public class BufferLock {
private int value;
private boolean isEmpty=true;
public synchronized void put(int i)
{
while(!isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e)
{
}
}
value=i;
isEmpty=false;
notify();
}
public synchronized int get()
{
while(isEmpty)
{
try
{
this.wait();
}
catch(InterruptedException e)
{
}
}
isEmpty=true;
notify();
return value;
}
}

class Sender extends Thread
{
private BufferLock buffer;
public Sender(BufferLock buffer)
{
this.buffer=buffer;
}
public void run()
{
for(int i=1;i<6;i++)
{
buffer.put(i);
System.out.println("Sender put :

- -! 你还真是较真儿

关于多线程的部分一般书上都会说“例子输出可能和你的实际情况有差别”

书看仔细点儿 多翻基本对比一下

多线程的执行序是很不确定的 java的多线程依然是依赖底层操作系统的多线程调度机制的 不同的系统执行结果都可能不同 就算是同一台机器同一个系统几次的执行顺序也可能不同

你是怎么跑起来的