小编sun*_*die的帖子

Android库中的线程安全性

我正在尝试为Android系统实现本机共享库(.so).当然,有些代码块需要是线程安全的.

我在这里发现不支持pthreads锁,互斥锁或条件变量.

我想知道图书馆级别通常使用什么来实现线程安全?

android shared-libraries thread-safety bionic android-library

10
推荐指数
1
解决办法
293
查看次数

如何安全地退出HandlerThread的活套

我有一个HandlerThread,我每隔5秒就会发布一个runnable.像这样的东西:

HandlerThread thread = new HandlerThread("MyThread");
thread.start();
Handler handler = new Handler(thread.getLooper());
handler.post(new Runnable() {
  public void run() { 
    //...
    handler.postDelayed(this, 5000);
  }
});
Run Code Online (Sandbox Code Playgroud)

我需要在60秒或类似之后退出弯针.所以我写道:

mainHandler = new Handler(Looper.myLooper()); //main thread's
mainHandler.postDelayed(new Runnable() {
  @Override
  public void run() {
    thread.getLooper().quit();
  }
}, 60000);
Run Code Online (Sandbox Code Playgroud)

我认为这会导致looper突然退出,所以我开始收到这条"警告"消息:

W/MessageQueue(3726):java.lang.RuntimeException:Handler(android.os.Handler){4823dbf8}在死线程上向Handler发送消息

我想避免这个错误消息,我以为我可以通过使用该Looper.quitSafely()方法解决它..但我检查了API,它不再可用.有谁知道发生了什么事?(它不像其他一些方法那样被弃用).

有什么方法可以安全地退出弯针吗?谢谢!

android handlers looper

7
推荐指数
1
解决办法
6222
查看次数