• Java多线程编程初识— —2


      线程有同步和异步之分。

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

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

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

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

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

      

  • 相关阅读:
    shell-用户权限操作
    Python 库列表
    【random】模块运用,随机数实例
    Python 原生文件读写
    Python 运用pymysql+pandas 完成连接 MySQL 数据库读
    MySQL命名、设计及使用规范
    测试for循环计算耗时
    正则表达式速查表
    MySQL8.0.21下载安装详细教程
    MySQL 修改目录重置
  • 原文地址:https://www.cnblogs.com/leafde/p/3714656.html
Copyright © 2020-2023  润新知