【发布时间】:2012-07-17 00:13:42
【问题描述】:
1。 我有主 UI 线程,它使用库函数。
MainUI {
library.funcA(1);
library.funcB(2,3);
}
我不希望主线程等待每次调用结束。同样为每个调用创建新线程是无效的并且不是线程安全的,所以我希望它们在另一个同一个线程上运行。 所以我用一个消息队列/处理程序创建了另一个线程。
MainUI {
handler.post(new Message(FUNC_A,[1]));
handler.post(new Message(FUNC_B,[2,3]));
}
但是我每次都需要创建新的 Message 对象并在 handleMessage() 中再次对其进行解码,这似乎有开销。此外,处理各种数量的参数打包/解包看起来很难看。我想将所有函数都设为 Runnable 并将它们发布到处理程序,但函数有不同的参数,我需要创建扩展 Runnable 类的新类!
我目前的计划是在库中的每个函数中插入同步关键字,以便线程一个接一个地运行, 但我不喜欢创建/消失的许多线程,因此使系统变得繁重(也不是线程安全的)。我想听听意见。
2。 如果从多个线程(不仅是主线程)调用库,那么将调用转换为在库自己的单线程上运行的最佳方法是什么?
【问题讨论】:
-
不,在 Android 框架中处理 View.java。它为每次触摸视图调用我的函数。我应该尽量少打扰。
标签: android multithreading thread-safety