阅读376 返回首页    go 阿里云 go 技术社区[云栖]


线程带来的风险(第一章)

线程带来的风险

  1. 安全性问题 ----> 安全性的含义是“永远不发生糟糕的事” 线程安全问题非常复杂,在没有充分同步的情况下,多个线程中的操作顺序是无法预测的。 如果没有同步,那么无论是编译器、硬件还是运行时,都可以随意安排操作的执行顺序和时间,例如对寄存器或者处理器中的变量进行缓存(缓存后成为当前线程的局部变量),而这些被缓存的变量对于其他线程来说是暂时(甚至永久)不可见的。
  2. 活跃性问题 ----> 活跃性的含义是“正确地事最终会发生” 多线程环境中活跃性问题的常见形式:死锁、活锁、饥饿
  3. 性能问题 性能问题与活跃性密切相关,活跃性意味着某件正确地事最终会发生,性能问题则关注让其尽快发生。性能问题包含多个方面,例如服务时间过长、响应不灵敏,吞吐率过低等。

Java中使用锁来实现同步、原子操作等功能,但锁的使用会带来性能方面的问题。当执行时间较长的计算或者可能无法快速完成的操作时(例如网络IO、控制台IO),一定不要持有锁。

最后更新:2017-11-04 17:33:34

  上一篇:go  线程安全性(第二章)
  下一篇:go  php获取今日头条视频地址并插入织梦cms数据库