多线程操作会有什么问题?
多线程中的使用共享变量(临界资源),会导致变量结果不确定。
什么是线程安全?
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。(来自 - java线程安全理解)
怎么解决?
- 互斥 - 一个一个排队来;
- 同步 - 不到我,就先睡会,可以了再叫醒我;
JAVA多线程实现方式主要有三种:
- 继承Thread类;
- 实现Runnable接口;
- 使用ExecutorService、Callable、Future实现有返回结果的多线程。
参考:
JAVA多线程实现和应用总结
Android 的多线程问题:
- Android是单线程模型,这意味着Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行;
- Android中的Main线程的事件处理不能太耗时,否则后续的事件无法在5秒内得到响应,就会弹出ANR对话框。
如何实现线程间通讯?
- 使用AsyncTask
- 使用Handler
参考:
用好android多线程问题
优化方案: