zoukankan      html  css  js  c++  java
  • 【Java多线程】线程同步方法概览

        一:使用syncrhoized内置锁实现同步

        使用互斥来实现线程间的同步,保证共享数据在同一时刻只被一个线程使用。Java中最基本的互斥手段就是syncrhoized关键字。

        syncrhoized的底层原理与操作系统中的信号量的使用类似:编译后,syncrhoized变成两个字节码指令monitorenter和monitorexit,分别位于同步块代码的前后。这两个指令都有一个reference指向锁对象。字节码执行引擎遇到monitorenter时,根据reference获取锁对象,如果能获取,或者当前线程本就获取了这个锁,那么锁的计数器+1;否则等待;当遇到monitorexit时,锁计数器-1;当计数器为0,当前线程释放锁。【这就是syncrhoized内置锁的可重入性

        在 http://www.cnblogs.com/ygj0930/p/5827547.html 这篇博文有详细介绍。

        二:使用concurrent包下的同步工具实现同步

       concurrent包提供了大量同步控制工具,在本系列的 【Java多线程同步实现】标题前缀的博文 中有逐个讲解。

       如:ReentrantLock重入锁、ReadWriteLock读写锁、Semaphore信号量、CountDownLatch与CyclicBarrier同步屏障、LockSupport阻塞原语等。

  • 相关阅读:
    JS,Jquery获取各种屏幕的宽度和高度
    mysql存储html代码之导出后无法导入问题
    php之简单socket编程
    php单点登录SSO(Single Sign On)的解决思路
    php读取邮件
    YII框架的依赖注入容器
    YII框架的行为
    YII框架的事件机制
    YII框架的模块化技术
    mysql的索引
  • 原文地址:https://www.cnblogs.com/ygj0930/p/6537724.html
Copyright © 2011-2022 走看看