并发--概述

并发

活跃性问题:
  1、死锁:线程A,B各种拥有一个加锁的资源,同时争抢对方的资源。
  2、饥饿:某些线程得不到运行。(线程优先级)
  3、活锁:线程A,B相让,都不去执行。


饥饿产生的情况:
  1、线程优先级。(需要考虑系统的差异性)
  2、线程A,B执行同一个同步块;线程A阻塞,线程B在等待A释放锁。
  3、线程永远不被唤醒。


避免饥饿问题:
  1、设置合理的优先级。
  2、使用Lock来进行同步。

出现多线程问题:
  1、多线程环境
  2、多个线程争抢同一个资源。
  3、对争抢的资源进行非原子操作。

synchronized 内置锁:
  jvm字节码层面:
    monitorenter //字节码加锁
    synchronized(){}
    monitorexit //字节码释放锁

 

posted @ 2019-08-16 04:17  陈标  阅读(137)  评论(0编辑  收藏  举报