• 008 synchronized关键词


    一 .概述

      在前面,我们说到了java提供了synchronized关键词帮助我们实现一个可重入的独占锁的概念.

      本节,我们讨论这个关键词的使用.


     二 .使用方式

    synchronized关键词可以出现在三个地方

    [1]静态方法上

    [2]实例方法上

    [3]同步代码块上

    从本质上说,我们其实没有必要分得那么的细,因为原理都是一致的.

    该关键词的作用就是提供了一个阻塞队列的概念:

    一个线程获取的monitor,就会获得可以资源的独享权利,当其它线程试图获取该monitor的时候,就会进入到该monitor的阻塞队列之中,直到拥有该monitor的线程释放所有权.


     三 . synchronized关键词的核心 --- monitor

      在java之中,所有的对象都可以作为monitor,也就是说,在java之中实现一个独占的概念非常的容易.

    从上面的分析,我们可以知道,monitor就是一个锁的概念,只是这个锁是重量级的锁.

      一旦一个线程获取,如果不释放,其它的线程就会被阻塞,直到monitor被释放.

      正是这个原因,synchronized关键词的性能可能不是很好.


     四 .改进

      在java6之后,synchronized关键词进行了改进,出现了自旋锁和轻量级锁的概念,其核心就是synchronized关键词实现的锁的力度会有一个升级的概念.

      在这里我们不去说这些细枝末节的概念.


    五 .死锁等问题

      如果多个线程由于同步方法使用不当,就可能出现死锁的概念.这是线程们都无法继续执行的一个状态.

      如果出现了死锁的现象,我们可以使用jconsole来查看和解决死锁的问题.

  • 相关阅读:
    tx:advice标签简介
    spring tx:advice 和 aop:config 配置事务
    java web开发 高并发处理
    log4j输出多个自定义日志文件,动态配置路径
    接口(interface) 可以 new()吗???~
    观察者模式
    BLOB的读写操作
    JAVA Timer定时器使用方法
    判断webservice是否可用
    二十三、oracle pl/sql分类三 包
  • 原文地址:https://www.cnblogs.com/trekxu/p/9514362.html
Copyright © 2020-2023  润新知