java 同步中的线程出现异常会放弃锁吗
2013-05-20 13:46
232 查看
http://zhidao.baidu.com/question/374619544.html
补充一点就是如果抛出异常被捕捉那么还是能继续获得锁第二个线程需等待线程一执行完毕才能执行
实验证明:会 下面代码r1会抛出异常,但是r2仍能拿到o对象的锁 public class Test { public static void main(String[] args) throws InterruptedException { final Object o = new Object(); Runnable r1 = new Runnable() { public void run() { synchronized (o) { throw new RuntimeException("throws"); } } }; Runnable r2 = new Runnable() { public void run() { synchronized(o) { System.out.println("acquire lock"); } } }; new Thread(r1).start(); Thread.sleep(1000); new Thread(r2).start(); } }
补充一点就是如果抛出异常被捕捉那么还是能继续获得锁第二个线程需等待线程一执行完毕才能执行
相关文章推荐
- java 注意线程下的 异常捕获,会跳过sleep(10000)休眠,可能会出现死循环
- java中使用wait就得使用同步锁,而且2个线程必须都使用同步代码块,否则就会异常
- JAVA 线程出现异常
- java线程安全之synchronized锁重入及出现异常锁自动释放(五)
- java线程持锁状态下出现异常会释放锁
- java中synchronization修饰的同步块的同步原理及出现异常时的自动资源释放原理
- java编程思想-并发之线程异常处理器
- Java调用hdfs出现java.lang.VerifyError: class org.apache.hadoop.hdfs.protocol.proto异常
- Java线程(八):锁对象Lock-同步问题更完美的处理方式
- Java中线程等待(同步)的五种方法
- Java在操作数组的时候常出现的异常
- Java线程:线程的同步与锁
- JAVA之旅(十三)——线程的安全性,synchronized关键字,多线程同步代码块,同步函数,同步函数的锁是this
- Java线程:线程的同步-同步方法
- Java线程同步:synchronized锁住的是代码还是对象
- Java线程之 InterruptedException 异常
- 关于Response.redirect和Response.End出现线程中止异常的处理
- Java基础-23总结多线程,线程实现Runnable接口,线程名字获取和设置,线程控制,线程安全,同步线程
- java线程-同步的引出
- java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用