2014-06-16 94 views
4

理想情況下,我想將阻塞隊列添加到選擇器,以便阻止從套接字讀取或直到阻塞隊列中出現一個項目。有沒有辦法在java中阻塞套接字和阻塞隊列?

是否有一些更高級別的類似選擇器的功能,在不同的類型上運行?

我可以走出俗氣的道路,並燒掉2個線程,並且每個線程都單獨阻塞,但是有一個函數可以阻塞這兩種類型的對象。

是否有辦法爲每個被阻塞的對象抓取監視器,並使用類似選擇器的對象來阻塞這兩個對象?

回答

2

我不相信你們可以在兩者上都有一個線程塊。如果問題是你有一個工作者線程可以接受來自隊列的任務或者直接從套接字接受任務,那麼可能會有一個更清晰的獨立線程從套接字中讀取任務並將它們放入隊列中。

+0

如果所有可能阻塞的東西都來自稱爲BlockingThing的東西,它將會更清潔。 :-) – stu