生活随笔
收集整理的這篇文章主要介紹了
JAVA——多线程——实现n个共享数据的线程同步
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
實(shí)驗(yàn)?zāi)康?/strong>:實(shí)現(xiàn)n個(gè)共享數(shù)據(jù)的線程同步
代碼:`
package xiancheng
;class ShareData
{private
char[] c
=new
char[4]; public
char[] getC() {return c
;}public
void setC(char[] c
) {this
.c
= c
;}public
static boolean
Isfull(char[] c
) {for(int i
=0;i
<c
.length
;i
++) {if(c
[i
]==0) {return false
;}}return true
;}public
static boolean
Isempty(char[] c
) {for(int i
=0;i
<c
.length
;i
++) {if(c
[i
]!=0) {return false
;}}return true
;}public synchronized
void putShareChar(char ch
) {if(Isfull(this
.c
)) {try
{wait();} catch
(InterruptedException e
) {e
.printStackTrace();}}for(int i
=0;i
<this
.c
.length
;i
++) {if(this
.c
[i
]==0) {this
.c
[i
]=ch
;break;}}notify();}public synchronized
char getShareChar() {if(Isempty(this
.c
)) {try
{wait();} catch
(InterruptedException e
) {e
.printStackTrace();}}notify();for(int i
=0;i
<this
.c
.length
;i
++) {if(this
.c
[i
]!=0) {char ch1
=this
.c
[i
];this
.c
[i
]=0;return ch1
;}}return 0;}
}class Producer extends Thread
{private ShareData s
;public
Producer(ShareData s
) {this
.s
= s
;}public
void run() {for(char ch
='A';ch
<='N';ch
++) {s
.putShareChar(ch
);System
.out
.println("生產(chǎn)者生產(chǎn):"+ch
);try
{Thread
.sleep((int)Math
.random()*100);} catch
(InterruptedException e
) {e
.printStackTrace();}}}
}
class Customer extends Thread
{private ShareData s
;public
Customer(ShareData s
) {this
.s
= s
;}public
void run() {char ch
;do {ch
=s
.getShareChar();System
.out
.println("消費(fèi)者消費(fèi):"+ch
);try
{Thread
.sleep((int)Math
.random()*500);} catch
(InterruptedException e
) {e
.printStackTrace();}}while(ch
!='N');}
}public class nongchang
{public
static void main(String
[] args
) {ShareData s
=new
ShareData();Producer producer
=new
Producer(s
);Customer customer
=new
Customer(s
);Thread p
=new
Thread(producer
);Thread c
=new
Thread(customer
);p
.setPriority(Thread
.MAX_PRIORITY
);c
.setPriority(Thread
.MAX_PRIORITY
);p
.start();c
.start();}
}
截圖:
總結(jié)
以上是生活随笔為你收集整理的JAVA——多线程——实现n个共享数据的线程同步的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。