zoukankan      html  css  js  c++  java
  • 多线程 Synchronized关键字和Lock

    Synchronized  分为实例锁和全局锁.

    实例锁为 synchronized(this) 和 非static synchronized方法.   也加对象锁. 只要一个线程访问这类的一个synchronize方法, 其他的synchronized方法也将被阻塞.

    全局锁 synchronized(.class) 和static synchronize方法, 同样也是一个线程只能同时访问一个方法 

    实例锁和全局锁 一起用的话 起不到同步的作用

        public synchronized void increase() {
            inc++;
        }
    上面是synchronized的实现方法;
        Lock lock = new ReentrantLock();
     
        public  void increase() {
            lock.lock();
            try {
                inc++;
            } finally{
                lock.unlock();
            }
        }
     
    下面是lock的做法,是相同的.
     
    如果是简单的加减的做法java.util.concurrent.atomic提供了原子类
     
        public  AtomicInteger inc = new AtomicInteger();
     
        public  void increase() {
            inc.getAndIncrement();
        }
     
    这个做法等同于上的
  • 相关阅读:
    Pandas也能轻松绘图,简单而又漂亮
    笔试题: 二叉排序数左移k个
    补题next_permutation
    从HTTP到HTTPS
    HTTP首部字段详解
    HTTP请求方法及响应状态码详解
    HTTP报文格式详解
    TCP/IP网络基础
    Netty学习笔记
    ZooKeeper学习笔记
  • 原文地址:https://www.cnblogs.com/haoerlv/p/7606465.html
Copyright © 2011-2022 走看看