我想使用线程作为事件循环线程。我的意思是一个具有“类似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,所以不可能)