Android/Java 之多线程

多线程操作会有什么问题?

多线程中的使用共享变量(临界资源),会导致变量结果不确定。

参考:JAVA多线程的问题以及处理

什么是线程安全?

如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。(来自 - java线程安全理解

怎么解决?

  • 互斥 - 一个一个排队来;
  • 同步 - 不到我,就先睡会,可以了再叫醒我;
JAVA多线程实现方式主要有三种:
  • 继承Thread类;
  • 实现Runnable接口;
  • 使用ExecutorService、Callable、Future实现有返回结果的多线程。
其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。

Android 的多线程问题:
  • Android是单线程模型,这意味着Android UI操作并不是线程安全的并且这些操作必须在UI线程中执行;
  • Android中的Main线程的事件处理不能太耗时,否则后续的事件无法在5秒内得到响应,就会弹出ANR对话框。

如何实现线程间通讯?
  • 使用AsyncTask
  • 使用Handler

优化方案: 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值