我想使用線程作爲事件循環線程。我的意思是一個具有「類似QThread行爲」的Java線程(在下面的例子中爲t2
)。說明:作爲事件循環線程的Java線程
我有一個線程t1
(主線程)和一個線程t2
(工作線程)。我想從t1
調用method()
,在t2
線程中執行。
目前,我做了這個代碼(它的工作原理,但我不喜歡它):
-Thread T1(主線程,UI線程爲例):
//...
// Here, I want to call "method()" in t2's thread
Runnable event = new Runnable() {
@Override
public void run()
{
t2.method(param);
}
};
t2.postEvent(event);
//...
- 螺紋T2:
//...
Queue<Runnable> eventLoopQueue = new ConcurrentLinkedQueue<Runnable>();
//...
@Override
public void run()
{
//...
Runnable currentEvent = null;
while (!bMustStop) {
while ((currentEvent = eventLoopQueue.poll()) != null) {
currentEvent.run();
}
}
//...
}
public void method(Param param)
{
/* code that should be executed in t2's thread */
}
public void postEvent(Runnable event)
{
eventLoopQueue.offer(event);
}
該解決方案是醜陋的。我不喜歡t2
中的「always-working」主循環,每次在t1
中分配新的Runnable
...我的程序可以調用method
,每秒鐘的時間爲40次,所以我需要它的效率。
我在尋找應該在Android中使用的解決方案太(我知道的Android類Looper,但它僅適用於Android,所以不可能)