Java多线程(八) synchronized 抛出异常锁自动解除
2024-09-30 20:10:17
当一个线程执行的代码出现异常时,其所持有的锁会自动释放
public class MyObject { private int i = 1; synchronized public void methodA() throws InterruptedException {
System.out.println("begin methodA threadName=" + Thread.currentThread().getName());
if(i==1){
throw new InterruptedException();
}
System.out.println("end methodA ");
} synchronized public void methodB() throws InterruptedException {
System.out.println("begin methodB threadName=" + Thread.currentThread().getName());
System.out.println(" end methodB");
}
}
ThreadA 和 ThreadB
public class ThreadA extends Thread { private MyObject myObject; public ThreadA(MyObject myObject){
this.myObject =myObject;
}
public void run(){
try {
myObject.methodA();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} public class ThreadB extends Thread { private MyObject myObject; public ThreadB(MyObject myObject){
this.myObject =myObject;
}
public void run(){
try {
myObject.methodB();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run
public class Run { public static void main(String[] args) {
MyObject object = new MyObject();
ThreadA threadA = new ThreadA(object);
threadA.setName("A");
threadA.start(); ThreadB threadB = new ThreadB(object);
threadB.setName("B");
threadB.start();
}
}
最新文章
- Maven 集成Tomcat插件
- cocos2dx &;&; Lua 环境配置
- czxt
- 异步等待时,在异步前弹出窗口的TIMER,不会TICK
- 【CentOS】安装chrome
- Android中图片的异步加载
- PHP 访问类中的静态属性
- Asp.Net2.0下C#环境 Login控件实现用户登录
- shell脚本编写步骤及其常用命令和符号
- 原生JS元素怎么取消事件
- htpasswd 命令详解
- 只有一百行的xss扫描工具——DSXS源码分析
- RSP小组——团队冲刺博客三
- java自动拆装箱(转载)
- Jenkins问题记录:android构建时提示Unzipping /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9/gradle-3.3-all.zip to /home/.gradle/wrapper/dists/gradle-3.3-all/55gk2rcmfc6p2dg9u9ohc3hw9 Except
- JAVA课后作业01
- ogg 12.3 for sqlserver 2016 CDC模式配置
- SaaS教父:我眼中最糟糕的9条SaaS建议(转)
- Java SpringMVC框架学习(三)springMVC的执行流程
- 创建 HelloWorld 项目
热门文章
- Spring3.2+mybatis3.2+Struts2.3整合配置文件大全
- js数组转换成json串 (JSON.stringify)
- gradle 安装及设置本地仓库地址
- 编程精粹--编写高质量C语言代码(3):自己设计并使用断言(二)
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
- iOS开发项目实战——Swift实现图片轮播与浏览
- android菜鸟之路-事件分发机制总结(二)
- 项目实战之poi导出excel
- Bridge Page
- Delphi中SendMessage使用说明(所有消息说明) good