并发

活跃性问题:
  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 //字节码释放锁

 

相关文章:

  • 2021-07-15
  • 2022-01-20
  • 2019-03-10
  • 2021-08-19
  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
猜你喜欢
  • 2021-04-28
  • 2021-08-18
  • 2021-08-13
  • 2022-02-06
  • 2022-12-23
相关资源
相似解决方案