- 浏览: 253194 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (298)
- 工作感悟 (6)
- java基础 (23)
- 计算机硬件知识 (1)
- 计算机网络知识 (2)
- Struts (3)
- Srping (4)
- hibernate (0)
- ibatis (0)
- webservice (4)
- Thread (22)
- maven (5)
- ubuntu/linux/centos/redhat (46)
- SSO (1)
- ESB (0)
- 工作流 (0)
- oracle (15)
- 云计算 (1)
- hadoop (1)
- nosql (0)
- mysql (3)
- sqlserver (0)
- jquery (0)
- 分布式 (3)
- 集群 (0)
- 设计模式 (2)
- EJB (0)
- map (0)
- cache (5)
- Niginx+varnish+squid+Ats (14)
- Apache (0)
- 工作/职业规划 (0)
- Scala & Groovy (1)
- English (4)
- 数据结构/算法 (6)
- 开发工具 (5)
- 测试 (2)
- Exception (0)
- 定时器 (3)
- j2ee (2)
- 部署 (1)
- Openssl (1)
- 操作系统 (3)
- kvm (13)
- libvirt (5)
- PostgreSql (5)
- 虚拟化 (3)
- 概念理解 (1)
- virt-manager (1)
- RESTful (3)
- 其它 (4)
- ssh2 (14)
- windows (1)
- 房产 (2)
- svn (1)
- 手机 (1)
- ant (1)
- flume (2)
- sqoop (1)
- fastdfs (5)
- log4j (1)
- SPDY (1)
- mongodb (2)
- MQ (2)
- Mina (1)
- dubbo (4)
- PMP (1)
- Webshpere (2)
- jvm (1)
- Btrace (1)
- zookeeper (7)
- UML (1)
- spring cloud (6)
- spring boot (5)
- storm (0)
- 软件管理 (1)
- elasticsearch (1)
- 协议 (2)
- docker (1)
- 性能 (2)
- 安全 (1)
- 代码规范 (1)
- mqtt (1)
- lombok (1)
- 车联网 (1)
- kafka (1)
最新评论
lockInterruptibly 与 lock比较区别在于
lockInterruptibly 优先考虑响应中断,而不是响应锁定的普通获取或重入获取
如果a处 是lock.lock();
输出
Thread-0 running
(这里休眠了20s)
Thread-0 finished
Thread-1 running
Thread-1 interrupted
============================
如果a处是lock.lockInterruptibly()
Thread-0 running
Thread-1 interrupted
(这里休眠了20s)
Thread-0 finished
=========================
如果a处是lock.tryLock();
Thread-1 running
Thread-0 running
(这里休眠了20s)
Thread-1 finished
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(Unknown Source)
at java.util.concurrent.locks.ReentrantLock.unlock(Unknown Source)
at test.RunIt3.run(TTTT.java:32)
at java.lang.Thread.run(Unknown Source)
=========================
如果a处是lock.tryLock(10,TimeUnit.SECONDS);
Thread-0 running
(这里休眠了10s)
Thread-1 running
(这里休眠了10s)
Thread-0 finished
(这里休眠了10s)
Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(Unknown Source)
at java.util.concurrent.locks.ReentrantLock.unlock(Unknown Source)
at test.RunIt3.run(TTTT.java:32)
at java.lang.Thread.run(Unknown Source)
lockInterruptibly 优先考虑响应中断,而不是响应锁定的普通获取或重入获取
package test; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class TTTT { public static void main(String[] args){ Thread i1 = new Thread(new RunIt3()); Thread i2 = new Thread(new RunIt3()); i1.start(); i2.start(); i2.interrupt(); } } class RunIt3 implements Runnable{ private static Lock lock = new ReentrantLock(); public void run(){ try{ //---------------------------------a lock.lock(); //lock.lockInterruptibly(); System.out.println(Thread.currentThread().getName() + " running"); TimeUnit.SECONDS.sleep(20); lock.unlock(); System.out.println(Thread.currentThread().getName() + " finished"); } catch (InterruptedException e){ System.out.println(Thread.currentThread().getName() + " interrupted"); } } }
如果a处 是lock.lock();
输出
Thread-0 running
(这里休眠了20s)
Thread-0 finished
Thread-1 running
Thread-1 interrupted
============================
如果a处是lock.lockInterruptibly()
Thread-0 running
Thread-1 interrupted
(这里休眠了20s)
Thread-0 finished
=========================
如果a处是lock.tryLock();
Thread-1 running
Thread-0 running
(这里休眠了20s)
Thread-1 finished
Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(Unknown Source)
at java.util.concurrent.locks.ReentrantLock.unlock(Unknown Source)
at test.RunIt3.run(TTTT.java:32)
at java.lang.Thread.run(Unknown Source)
=========================
如果a处是lock.tryLock(10,TimeUnit.SECONDS);
Thread-0 running
(这里休眠了10s)
Thread-1 running
(这里休眠了10s)
Thread-0 finished
(这里休眠了10s)
Exception in thread "Thread-1" java.lang.IllegalMonitorStateException
at java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(Unknown Source)
at java.util.concurrent.locks.AbstractQueuedSynchronizer.release(Unknown Source)
at java.util.concurrent.locks.ReentrantLock.unlock(Unknown Source)
at test.RunIt3.run(TTTT.java:32)
at java.lang.Thread.run(Unknown Source)
发表评论
-
Java通过Executors提供四种线程池
2017-09-27 10:21 441Java通过Executors提供四种线程池,分别为: new ... -
并发线程组件 Amino
2013-07-23 13:29 665Amino CBB (Concurrent Building ... -
Java多线程之Semaphore
2013-07-17 16:12 565import java.util.ArrayL ... -
ThreadLocal的介绍(利用变量副本实现多线程访问同一变量)
2013-07-17 14:20 770早在Java 1.2推出之时,Ja ... -
ThreadGroup其实比ExecutorService更好
2013-07-17 13:32 676用java做抓取的时候免不了要用到多线程的了,因为要同时抓取多 ... -
Java多线程同步器
2013-07-12 17:00 840CyclcBarrier 在实际应用中,有时候需要多个线程 ... -
Java Thread.interrupt 害人! 中断JAVA线程
2013-07-12 16:37 752程序是很简易的。然而,在编程人员面前,多线程呈现出了一组新的难 ... -
Java多线程学习——Condition的使用
2013-07-12 14:36 795Condition 将 Object 监视器方法(wait、n ... -
java多线程设计wait
2013-07-12 14:30 665在Java中,这个机制的实 ... -
Monitor
2013-07-12 10:44 15031. 什么是Monitor? Monitor其实是一 ... -
处理 子线程的返回值
2013-07-08 14:19 821package com.jimmy.Thread.Conc ... -
ExecutorService的execute和submit方法
2013-07-05 17:21 947因为之前一直是用的exec ... -
Exchanger-兄弟线程的信息交换
2013-07-05 16:23 667如果两个线程在运行过程中需要交换彼此的信息,比如一个数据或者使 ... -
慎重使用volatile关键字
2013-06-26 11:10 712volatile关键字相信了解Java多线程的读者都很清楚它的 ... -
对synchronized(this)的一些理解
2013-06-26 10:18 652一、当两个并发线程访问同一个对象object中的这个synch ... -
java中的lock和synchronized区别
2013-06-26 10:02 5641、ReentrantLock 拥有Synchronized相 ... -
线程sleep,join,yield的区别
2013-06-21 17:37 4811.sleep() 使当前线程(即调用该方法的线程)暂停执行 ... -
初学Java多线程:慎重使用volatile关键字
2013-02-25 15:18 666学习Java多线程中会遇到使用volatile关键字的情况。v ... -
java之yield(),sleep(),wait()区别详解-备忘笔记
2013-02-25 14:32 6071、sleep() 使当前线程(即调用该方法的线程)暂停执行 ... -
Java Thread join() 的用法
2013-02-25 13:24 568Java Thread中, join() 方法主要是让调用改方 ...
相关推荐
redisson lock和tryLock 分布式锁简单练习
有关oracle当中锁的描述,Latch和Lock的区别,挺不错的。
java多线程之lock。 Lock的基本用法如下,为了防止异常退出时没有释放锁,一般都在拿到锁后立马try,try住所有临界区的代码,然后finally释放锁。
关键字-回车映射-ahk回车映射-左手回车 ;;快捷键x说明 上下左右 ... CapsLock+q 箭头上--防止误触屏-CapsLock+q也映射为箭头上 ;; CapsLock+e 删除键-删除前面的-Backspace ;; CapsLock+r 删除键-删除后面的--Del
并发编程中,锁是经常需要用到的,今天我们一起来看下Java中的锁机制:synchronized和lock。 Synchronized 和 Lock的概念 Synchronized 是Java 并发编程中很重要的关键字,另外一个很重要的是 volatile。Syncronized...
基础理论知识,描述lock和synchronized的区别和基础的理论,其中还有死锁等基础概念。
修改注册表的文件,更改win7左ctrl和capslock键(reg文件一键导入)
因此,在对Package/Procedure/Function/View进行编译和分析的时候,我们必须确定此时没有人正在编译和分析相同的对象,即确保没有人也在此时改变这些需要重定义(drop和recreate)的对象的定义。
Lock锁是对象锁,仅在同一对象中,锁才会生效。(不做论证) (以下场景皆为单例模式下运行) lock.lock()的加锁方式,会使后续请求的线程堵塞等待。(方案A) lock.tryLock()的加锁方式,不会堵塞,会立即返回加锁...
实现yarn.lock与package-lock.json相互转换
gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 gradle lock文件清除 ...
Lock、Synchoronized和ReentrantLock的使用
lock锁,lock锁和synchronized的对比 # Lock锁 JDK5.0后Java提供了一种更加强大的线程同步机制。一种显式定义同步锁对象来实现锁,提供了对共享资源的独占访问,每次只能有一个线程对Lock对象加锁,线程开始访问...
PowerManager.WakeLock 有加锁和解锁两种状态,加锁的方式有两种: 第一种是永久的锁住,这样的锁除非显式的放开,否则是不会解锁的,所以这种锁用起来要非常的小心。 第二种锁是超时锁,这种锁会在锁住后一段时间...
significance of a lock-in amplifier. As an introduction to the subject there follows a simple intuitive account biased towards light measurement applications. All lock-in amplifiers, whether ...
设定CapsLock ScrollLock NumLock
Active Lock可以将任何一款普通的U盘变成您的Windows登录钥匙。 启用Active Lock后,用户需要插入USB钥匙盘才能登录Windows操作系统,拔出U盘时自动锁住电脑。Active Lock采用Windows登录验证接口,支持Windows 2000...
报错大致意思就是创建index.lock文件失败,因为已经存在index.lock文件了. index.lock文件是在.git下面, 而.git是一般是隐藏的, 那么可以通过以下命令删除即可. rm -rf /Users/dianji/project/ccpay.h5/.git/index....
Capslock++(AutoHotKey脚本),改造Capslock键,快速提升工作效率
Capslock+软件下载http://cjkis.me/capslock+/