zoukankan      html  css  js  c++  java
  • java多线程(四)之同步机制

    1.同步的前提

      多个线程

      多个线程使用的是同一个锁

    2.同步的好处

      同步的出现解决了多线程的安全问题

    3.同步的弊端

      当线程较多时, 因为每个线程都会去判断同步上的锁, 这样是很耗费资源的, 会降低程序的运行效率.

    4.同步方法:

      1.就是将同步关键字, synchronized加到方法上, 此时的锁对象是this

      2.静态方法的锁对象是类的字节码文件对象, Xxx.class

    5.jdk5之后的Lock锁

      Lock接口的两个方法

        lock(): 获取锁

        unlock(): 释放锁

      子类:ReentrantLock()

        通过调用子类的这两个方法, 获取锁, 释放锁, 将需要同步的代码块包进来, 同样可以解决线程安全问题.如下伪代码:

        ReentrantLock lock= new ReentrantLock();

        try{

          lock.lock();

          同步代码;

        }finally{

          lock.unlock();

        }

    6.同步弊端

      a.效率低

      b.如果出现同步嵌套, 容易产生死锁

        死锁: 两个或两个以上线程, 在争夺资源的过程中, 出现相互等待的现象.

    7.线程间通信

      不同种类的线程针对同一个资源的操作.(生产者, 消费者)

      生产者, 消费者, 等待唤醒机制:

      

  • 相关阅读:
    2015年要做的150件事
    再见2014,你好2015
    页面滚动事件的使用
    简单的进度条演示
    mybatis foreach批量处理
    mysql执行顺序
    spring声明式事务 同一类内方法调用事务失效
    Semaphore
    springmvc使用JSR-303对复杂对象进行校验
    springmvc全局异常后返回JSON异常数据
  • 原文地址:https://www.cnblogs.com/yadongliang/p/8309427.html
Copyright © 2011-2022 走看看