zoukankan      html  css  js  c++  java
  • 多线程的一点点整理

    1.synchronized

     synchronized:实现线程同步,同步可以是某一方法或某一个代码块,获取对象锁,其他线程阻塞。

     使用wait()释放对象锁,线程进入等待状态,wait()后面的代码将等待线程再次被唤醒时执行。

     使用notify()随机唤醒一个处于wait()方法的线程,重新获取对象锁,使用notifyAll()唤醒所有处于wait()的线程,只不过多个处于wait()方法线程会竞争对象锁,谁拿到锁谁执行,具有不确定性。

     2.Lock

     ReentrantLock lock = new ReentrantLock();//得到锁对象

     lock.lock();//获取对象锁,使得线程后面代码同步,其他线程阻塞

     lock.unlock();//释放锁

      Condition condition = lock.newCondition();//得到等待对象

      condition.await();//线程进入等待状态,await()后面的代码将等待线程再次被唤醒时执行。

      condition.signal();//唤醒一个处于await()方法的线程,重新获取对象锁,这里只唤醒condition对象执行了await()的线程,不具有随机性

      condition.signalAll();//唤醒所有处于await()的线程

    业精于勤 ==不想升职加薪的码农不是好码农==
  • 相关阅读:
    hdu 3573(数学+贪心)
    hdu 4726(贪心)
    hdu 5895(矩阵快速幂+欧拉函数)
    hdu 5894(组合数取模)
    hdu 5833(欧拉路)
    hdu 5875(单调栈)
    hdu 5877(树状数组+dfs)
    初识安卓-安装中遇到的一点坑
    第十二届湖南省省赛总结
    LuoGuP3594:[POI2015]WIL-Wilcze doły
  • 原文地址:https://www.cnblogs.com/coreyjk/p/6991900.html
Copyright © 2011-2022 走看看