synchronized和lock的区别: 类别 synchronized lock 存在层次 java的关键字,在jvm层面上 是一个类 锁的释放 1.以获取锁的线程执行完同步代码,释放锁 2.线程执行发生异常,jvm会让线程释放锁 在finally中必须释放锁,不然容易造成线程死锁 锁的获取 假设A线程获得锁,B线程等待, 如果A线程阻塞,B线程会一直等待 分情况而定,lock有多个锁获取的方法,可以尝试获得锁, 线程可以不用功一直等待 锁状态 无法判断 可以判断 锁类型 可以重入,不可以中…
多线程当中的阻塞队列 主要实现类有 ArrayBlockingQueue是一个基于数组结构的有界阻塞队列,此队列按FIFO原则对元素进行排序 LinkedBlockingQueue是一个基于链表结构的阻塞队列,此队列按FIFO排序元素,吞吐量通常要高于ArrayBlockingQueue SynchronousQueue是一个不存储元素的阻塞队列,单个插入操作必须等到另一个线程调用移除操作,否则插 入操作一直处于阻塞状态 1. 阻塞队列概念 阻塞队列通俗来说,是一个队列,而一个阻塞队列再数据结构…
synchronized 和 Lock 有什么区别?(未完成)…
目录 前言 synchronized用法 修饰方法 修饰实例方法 修饰静态方法 同步代码块 引出Lock Lock用法 子类:ReentrantLock 读写分离锁:ReadWriteLock Lock和synchronized比较 前言 多线程开发中,同步控制是必不可少的手段.而同步的实现需要用到锁,Java中提供了两种基本的锁,分别是synchronized 和 Lock.两种锁都非常常用,但也各有利弊,下面开始学习. synchronized用法 synchronized 是Java的关键…
1.原始构成: synchronized是关键字,属于JVM层面,底层是由一对monitorenter和monitorexit指令实现的. ReentrantLock是一个具体类,是API层面的锁. 2.使用方法: synchronized不需要用户手动释放锁,当synchronized代码块执行完成后,系统会自动让线程释放对锁的占用 ReentrantLock需要用户手动释放锁,若没有手动释放可能导致死锁现象. 3.等待是否可中断: synchronized不可中断,除非抛出异常或者正常运行完…
转自  :   http://www.tuicool.com/articles/qYFzUjf…
[转]JVM锁机制volatile/synchronized/lock 1.volatile实现原理 (1)聊聊并发(一)——深入分析Volatile的实现原理 --硬件级别锁实现,Lock前缀指令会引起处理器缓存(CPU高级缓存L1/L2/L3)回写到内存.一个处理器的缓存回写到内存会导致其他处理器的缓存无效. 2.JVM锁机制--synchronized (1)深入JVM锁机制1-synchronized --自旋锁.偏向锁 --synchronized的底层实现主要依靠Lock-Free的…
一.原始构成 synchronized是关键字属于JVM层面,monitorenter(底层是通过monitor对象来完成,其实wait/notify等方法也依赖monitor对象只有在同步代码块和同步方法中才能调用wait/notify等方法) Lock是具体的类,是api层面的锁: 二.使用方法 synchronized不需要用户手动释放锁,synchronized代码执行完成以后系统会自动让线程释放对锁的占有 ReentrantLock则需要用户手动去释放锁,若没有主动释放锁,就有可能导致…
1. Vector & ArrayList  相同点: 1.ArrayList和Vector都是继承了相同的父类和实现了相同的接口 2.底层都是数组实现的 3.初始默认长度都为10. 不同点:1)  Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好. 2) 当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容…
Collection是集合类的一个顶级接口,其直接继承接口有List与Set 而Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序.搜索以及线程安全等各种操作.java.util.Collections 是一个包装类.它包含有各种有关集合操作的静态多态方法.此类不能实例化,就像一个工具类,服务于Java的Collection框架. Collection是个Java.util下的接口,它是各种集合结构的父接口. Collections是个jav…