📄 buffer.java
字号:
//【例7.6】 发送线程与接收线程。
public class Buffer //缓冲区
{
private int value; //共享变量
public void put(int i)
{
value = i;
}
public int get()
{
return value;
}
}
class Sender extends Thread //发送线程类
{
private Buffer buffer; //用于交换数据的共享变量
public Sender(Buffer buffer) //指定缓冲区
{
this.buffer = buffer;
}
public void run()
{
for (int i=1;i<6;i++) //连续向缓冲区发送若干数据
{
buffer.put( i );
System.out.println("Sender put : " + i );
try
{
sleep(1);
}
catch(InterruptedException e) {}
}
}
}
class Receiver extends Thread //接收线程类
{
private Buffer buffer;
public Receiver(Buffer buffer) //指定缓冲区
{
this.buffer = buffer ;
}
public void run()
{
for (int i=1; i<6;i++) //连续从缓冲区接收若干数据
{
System.out.println("\t\t\tReceiver get : " + buffer.get()) ;
try
{
sleep(1);
}
catch(InterruptedException e) {}
}
}
public static void main(String args[])
{
Buffer buffer = new Buffer();
(new Sender(buffer)).start();
(new Receiver(buffer)).start();
}
}
/*
没有sleep(1)语句时,程序运行结果如下:
Sender put : 1
Sender put : 2
Sender put : 3
Sender put : 4
Sender put : 5
Receiver get : 5
Receiver get : 5
Receiver get : 5
Receiver get : 5
Receiver get : 5
有sleep(1)方法时,每次运行结果不确定,交替执行,间隔输出,一种可能的运行结果如下:
Sender put : 1
Receiver get : 1
Sender put : 2
Receiver get : 2
Sender put : 3
Sender put : 4
Receiver get : 4
Sender put : 5
Receiver get : 5
Receiver get : 5
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -