zoukankan      html  css  js  c++  java
  • Java多线程编程初识— —2

      线程有同步和异步之分。

      同步的使用场景:多个线程同时访问一块数据,也叫共享区。对于多个线程同时访问一块数据的时候,必须使用同步,否则可能会出现不安全的情况。比如数据库中的脏读。但是,多个线程同时访问一块数据,有一种情况不需要同步技术,那就是原子操作,也就是说操作系统在底层保证了操作要么全部做完,要么不做。

      异步的使用场景:只有一个线程访问当前的数据。比如,观察者模式,没有共享区,主题发生变化,通知观察者更新,主题继续做自己的事情,不需要等待观察者更新完成后再工作。

      显然,同步最最安全,最保险的。而异步不安全,容易导致死锁,这样一个线程死掉就会导致整个进程崩溃,但没有同步机制的存在,性能会有所提升 

      线程总共有八个状态,四个基本状态:新建、就绪、运行、死亡,其中运行是有四个状态:睡眠(sleep)、等待(wait)、挂起(yield)、阻塞(通过IO实现)。其中wait和sleep状态的区别有:

    wait sleep
    通过notify 自行醒来
    Object方法 Thread方法
    只能用在同步方法和同步快中 用在任何方法中
    会自动释放锁 不会释放锁

      

  • 相关阅读:
    pyhanlp 实体命名识别
    NABCD需求分析
    源代码
    遇到的问题和解决方法
    运行及总结
    测试与调试
    读《一个程序猿的生命周期》和《人,绩效和职业道德》有感
    面向对象程序设计
    设计类图
    SRS文档
  • 原文地址:https://www.cnblogs.com/leafde/p/3714656.html
Copyright © 2011-2022 走看看