Java多线程中使用ReentrantLock、synchronized加锁 简单举例
public class Demo {final static Lock lock = new ReentrantLock();public static void test(Long userId) throws InterruptedException {System.out.println("------线程开始进入-----" + new Date());lock.lock();try {System.err.println("打印..." + new Date());Thread.sleep(5000);} catch (Exception e) {}finally {lock.unlock(); //必须在finally中解锁 }}public static void test2(Long userId) throws InterruptedException {System.out.println("------线程开始进入-----" + new Date());synchronized (String.valueOf(userId).intern()) {System.err.println("打印..." + new Date());Thread.sleep(5000);}}public static void main(String[] srrt) {for(int i = 0;i < 3;i++) {new Thread(new Runnable() {@Overridepublic void run() {try {test2(1234L);} catch (InterruptedException e) {e.printStackTrace();}}}).start();}} }
1、ReentrantLock支持对异常的处理。
2、synchronized不支持对异常的处理,但支持对特定的某一对象值加锁。
转载于:https://www.cnblogs.com/yanketao/p/10836722.html
Java多线程中使用ReentrantLock、synchronized加锁 简单举例相关推荐
- java多线程中的join方法详解
java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...
- java多线程同步与死锁_浅析Java多线程中的同步和死锁
Value Engineering 1基于Java的多线程 多线程是实现并发机制的一种有效手段,它允许编程语言在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间相互独立,且与进程一样拥有独立 ...
- java 多线程的单例模式,Java多线程中的单例模式两种实现方式
Java多线程中的单例模式 一.在多线程环境下创建单例 方式一: package com.ietree.multithread.sync; public class Singletion { priv ...
- Java多线程中static变量的使用
Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果? Java中 没处理好同步 导致两个线程同时为一个static变量赋值 会导致什么后果?仅仅是多耗资源还是会引发异 ...
- Java多线程中的ThreadLocal,可继承,可修改
Java多线程中的ThreadLocal,可继承,可修改. package test;import java.util.Date;public class InheritableThreadLocal ...
- java多线程中的死锁、活锁、饥饿、无锁都是什么鬼?
转载自 java多线程中的死锁.活锁.饥饿.无锁都是什么鬼? 死锁.活锁.饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现了这三种情况,即线程不再活跃,不能再正常地执行下去了. 死锁 死锁 ...
- Java多线程,锁(CAS,synchronized,AQS,ReentrantLock)
该博客只是个人学习的笔记.如果有什么疑问或者有什么不对的都可以告诉我,目前只写了多线程和锁的部分,因为只是个人学习记录的笔记,所以写的不是很详细,里面有一些个人的见解思考供各位参考. 一.多线程 关于 ...
- java多线程中 锁 的概念的理解,java 并发多线程显式锁概念简介 什么是显式锁 多线程下篇(一)...
目前对于同步,仅仅介绍了一个关键字synchronized,可以用于保证线程同步的原子性.可见性.有序性 对于synchronized关键字,对于静态方法默认是以该类的class对象作为锁,对于实例方 ...
- java多线程系列(四)---ReentrantLock的使用
Lock的使用 前言:本系列将从零开始讲解java多线程相关的技术,内容参考于<java多线程核心技术>与<java并发编程实战>等相关资料,希望站在巨人的肩膀上,再通过我的理 ...
最新文章
- Elam的git笔记:(二)git的安装与基本操作介绍
- catch and batch
- skimage.io.imread vs caffe.io.load_image
- centos6.2安装桌面环境 与中文支持
- 叉乘点乘混合运算公式_初中数学学不会?公式这样记,让你做题效率翻倍!
- oracle 11g 在RedHat ES4 下面安装缺少的RPM
- vb net excel 剪贴板 粘贴_12-2-Excel快速编辑行列的10条经验
- mysql中blog数据_zp blog
- 为什么说这 5 大趋势,开发者不容错过?
- JVM中的垃圾收集算法
- 【ROM定制】Fastboot Enhance —— 适合人类使用的Fastboot + Payload.bin 解包工具箱
- 股票投资的基本面量化
- matlab不定积分曲线族画图,matlab不定积分
- 对网上一些Java笔试题的总结,答案与自我理解(400道)
- 【渝粤教育】电大中专中成药 (2)作业 题库
- gitlab中组的分类及权限介绍
- Receptive Field Block Net 论文阅读
- Ice飞冰页面配置菜单配置日志打印环境配置《六》
- Mybatis (总结完整)
- 马云的顿悟:阿里巴巴在维基经济学中成长