Java中Synchronized和Lock的使用
Atomic
和上面的类似,不激烈情况下,性能比synchronized略逊,而激烈的时候,也能维持常态。激烈的时候,Atomic的性能会优于ReentrantLock一倍左右。但是其有一个缺点,就是只能同步一个值,一段代码中只能出现一个Atomic的变量,多于一个同步无效。因为他不能在多个Atomic之间同步。
- import java.util.concurrent.TimeUnit;
- import java.util.concurrent.locks.Lock;
- import java.util.concurrent.locks.ReentrantLock;
- public class Resource3 {
- private Lock lock = new ReentrantLock();
- public void f() {
- // other operations should not be locked...
- System.out.println(Thread.currentThread().getName()
- + ":not synchronized in f()");
- lock.lock();
- try {
- for (int i = 0; i < 5; i++) {
- System.out.println(Thread.currentThread().getName()
- + ":synchronized in f()");
- try {
- TimeUnit.SECONDS.sleep(3);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- } finally {
- lock.unlock();
- }
- }
- public void g() {
- // other operations should not be locked...
- System.out.println(Thread.currentThread().getName()
- + ":not synchronized in g()");
- lock.lock();
- try {
- for (int i = 0; i < 5; i++) {
- System.out.println(Thread.currentThread().getName()
- + ":synchronized in g()");
- try {
- TimeUnit.SECONDS.sleep(3);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- } finally {
- lock.unlock();
- }
- }
- public void h() {
- // other operations should not be locked...
- System.out.println(Thread.currentThread().getName()
- + ":not synchronized in h()");
- lock.lock();
- try {
- for (int i = 0; i < 5; i++) {
- System.out.println(Thread.currentThread().getName()
- + ":synchronized in h()");
- try {
- TimeUnit.SECONDS.sleep(3);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- } finally {
- lock.unlock();
- }
- }
- public static void main(String[] args) {
- final Resource3 rs = new Resource3();
- new Thread() {
- public void run() {
- rs.f();
- }
- }.start();
- new Thread() {
- public void run() {
- rs.g();
- }
- }.start();
- rs.h();
- }
- }
Java中Synchronized和Lock的使用的更多相关文章
- java中synchronized与Lock的异同
		本文转载自java中synchronized与Lock的异同 前言 synchronized和Lock通过互斥保障原子性,能够保护共享数据以实现线程安全,其作用包括保障原子性.可见性.有序性 常见问题 ... 
- JAVA中synchronized和lock详解
		目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea.本文并不比较synchronize ... 
- Java中synchronized和Lock的区别
		synchronized和Lock的区别synchronize锁对象可以是任意对象,由于监视器方法必须要拥有锁对象那么任意对象都可以调用的方法所以将其抽取到Object类中去定义监视器方法这样锁对象和 ... 
- Java并发指南4:Java中的锁 Lock和synchronized
		Java中的锁机制及Lock类 锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制.锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消 ... 
- java中synchronized的用法详解
		记下来,很重要. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchron ... 
- java中synchronized的使用方法与具体解释
		Java语言的keyword.当它用来修饰一个方法或者一个代码块的时候,可以保证在同一时刻最多仅仅有一个线程运行该段代码. 一.当两个并发线程訪问同一个对象object中的这个synchronized ... 
- Java 中 synchronized的用法详解(四种用法)
		Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ... 
- java中 synchronized 的使用,确保异步执行某一段代码。
		最近看了个有关访问网络url和下载的例子,里面有几个synchronized的地方,系统学习下,以下内容很重要,记下来. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一 ... 
- JAVA 中 synchronized 详解
		看到一篇关于JAVA中synchronized的用法的详解,觉得不错遂转载之..... 原文地址: http://www.cnblogs.com/GnagWang/archive/2011/02/27 ... 
随机推荐
- win10部署Python3和Python2
			首先添加两个的环境变量, 使用python3 -m pip -v (后面为自己的pip命令) 工具: pip install you-get you-get -url 
- 【WIP】iOS UIKit
			创建: 2018/04/10 更新: 2019/02/19 原来忘记分类,把此博文归入ios应用开发 
- E20180407-hm
			queue n. (人或车辆) 行列,长队; 辫子; vi. (人.车等) 排队等候; vt. (使) 排队,列队等待; compatible adj. 兼容的,相容的; 和谐的,协调的 ... 
- 洛谷 - P1379 - 八数码难题 - bfs
			https://www.luogu.org/problemnew/show/P1379 #include <bits/stdc++.h> using namespace std; #def ... 
- bzoj 5496: [2019省队联测]字符串问题【SAM+拓扑】
			有一个想法就是暴力建图,把每个A向有和他相连的B前缀的A,然后拓扑一下,这样的图是n^2的: 考虑优化建图,因为大部分数据结构都是处理后缀的,所以把串反过来,题目中要求的前缀B就变成了后缀B 建立SA ... 
- spark 机器学习 朴素贝叶斯 原理(一)
			朴素贝叶斯算法仍然是流行的挖掘算法之一,该算法是有监督的学习算法,解决的是分类问题,如客户是否流失.是否值得投资.信用等级评定等多分类问题.该算法的优点在于简单易懂.学习效率高.在某些领域的分类问题中 ... 
- 学习Mahout(一)
			Mahout 官方下载地址:http://apache.fayea.com/apache-mirror/mahout/ 环境ubuntu 12.04, hadoop1.2.1 ,mahout 0.9 ... 
- Robotframework自动化系列:筛选结果数量统计
			Robotframework自动化系统:筛选结果数量统计 上一个节点已经可以随机选中某一个下拉框的值,我们在使用evaluate随机数的时候需要计算下拉选项总数,这时候我们是手工计算输入的:这时候如果 ... 
- 浅谈字符串哈希 By cellur925
			前言 蒟蒻最近在复习字符串算法...但正如之前所说,我OI太菜被关起来了,本蒟蒻只能从最简单的哈希入手了TAT.而别的dalao都在学习AC自动机/后缀数组等高到不知哪里去的算法qwq. 基本思想 映 ... 
- Python Unicode  and str
			http://stackoverflow.com/questions/18034272/python-str-vs-unicode-types unicode is a character set. ... 
