?? 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 + -