zoukankan      html  css  js  c++  java
  • 多线程之锁ReentrantLock与synchroniized

    synchronized 对线程进行加锁,其他线程等待知道线程释放锁。若发生异常JVM会自动释放锁。如果线程等待IO或者调用了sleep()方法没有释放锁那么就要一直等待。

    中断锁:可以中断的锁,lock 可以中断而synchronized 不可以中断。

    由于等待时间过长我们想要中断切换下一个线程。  

    多个线程都只是进行读操作,所以当一个线程在进行读操作时,其他线程只能等待无法进行读操作;

    因此就需要一种机制来使得多个线程都只是进行读操作时,线程之间不会发生冲突,通过Lock就可以办到

    通过Lock可以知道线程有没有成功获取到锁。这个是synchronized无法办到的

    Lock需要主动的去释放锁,一般在finally块中使用unlock();;而Lock则必须要用户去手动释放锁,如果没有主动释放锁,就有可能导致出现死锁现象。

  • 相关阅读:
    python之timeit模块
    python isinstance函数
    继承
    冒泡排序&&选择排序
    监听器
    被钝化的代码
    Ajax验证用户名
    原生ajax访问服务器所展现的现象
    今天
    随机点名
  • 原文地址:https://www.cnblogs.com/lianghaode/p/9124683.html
Copyright © 2011-2022 走看看