我也是剛剛才學(xué)習(xí)的,不是很懂,網(wǎng)上看了看例子,都不懂,JDK自帶了一個(gè)例子。
class Producer implements Runnable {
private final BlockingQueue queue;
Producer(BlockingQueue q) { queue = q; }
public void run() {
try {
while(true) { queue.put(produce()); }
} catch (InterruptedException ex) {
handle
}
}
Object produce() {
}
}
class Consumer implements Runnable {
private final BlockingQueue queue;
Consumer(BlockingQueue q) { queue = q; }
public void run() {
try {
while(true) { consume(queue.take()); }
} catch (InterruptedException ex) {
handle
}
}
void consume(Object x) {
}
}
class Setup {
void main() {
BlockingQueue q = new SomeQueueImplementation();
Producer p = new Producer(q);
Consumer c1 = new Consumer(q);
Consumer c2 = new Consumer(q);
new Thread(p).start();
new Thread(c1).start();
new Thread(c2).start();
}
}
上面的代碼我也看了一整才看懂的。java的并發(fā)實(shí)際上就是利用隊(duì)列進(jìn)行操作,如果對隊(duì)列和線程熟悉的話,那么這個(gè)也是比較簡單的,java并發(fā)是生產(chǎn)者和消費(fèi)者得具體應(yīng)用,第一個(gè)類負(fù)責(zé)生產(chǎn)東西放入到隊(duì)列中,第二個(gè)類用于從隊(duì)列中拿出東西進(jìn)行操作。最后一個(gè)是用于測試的,啟動(dòng)了一個(gè)生產(chǎn)的線程,兩個(gè)消費(fèi)的線程。
這個(gè)還可以和線程池進(jìn)行結(jié)合現(xiàn)在我還不是很會(huì),等會(huì)了再貼上代碼