Java多线程出现异常会自动释放锁

package com.wkcto.intrinsiclock;

/**

* 同步过程中线程出现异常, 会自动释放锁对象

*

* Author: 老崔

*/

public class Test09 {

public static void main(String[] args) {

//先创建Test01对象,通过对象名调用mm()方法

Test09 obj = new Test09();

//一个线程调用m1()方法

new Thread(new Runnable() {

@Override

public void run() {

obj.m1(); //使用的锁对象是Test06.class

}

}).start();

//另一个线程调用sm2()方法

new Thread(new Runnable() {

@Override

public void run() {

Test09.sm2(); //使用的锁对象是Test06.class

}

}).start();

}

//定义方法,打印100行字符串

public void m1(){

//使用当前类的运行时类对象作为锁对象,可以简单的理解为把Test06类的字节码文件作为锁对象

synchronized ( Test09.class ) {

for (int i = 1; i <= 100; i++) {

System.out.println(Thread.currentThread().getName() + " --> " + i);

if ( i == 50){

Integer.parseInt("abc"); //把字符串转换为int类型时,如果字符串不符合 数字格式会产生异常

}

}

}

}

//使用synchronized修饰静态方法,同步静态方法, 默认运行时类Test06.class作为锁对象

public synchronized static void sm2(){

for (int i = 1; i <= 100; i++) {

System.out.println(Thread.currentThread().getName() + " --> " + i);

}

}

}

java线程释放_Java多线程出现异常会自动释放锁相关推荐

  1. java线程钥匙_Java多线程并发编程/锁的理解

    一.前言 最近项目遇到多线程并发的情景(并发抢单&恢复库存并行),代码在正常情况下运行没有什么问题,在高并发压测下会出现:库存超发/总库存与sku库存对不上等各种问题. 在运用了 限流/加锁等 ...

  2. java线程池_Java多线程并发:线程基本方法+线程池原理+阻塞队列原理技术分享...

    线程基本方法有哪些? 线程相关的基本方法有 wait,notify,notifyAll,sleep,join,yield 等. 线程等待(wait) 调用该方法的线程进入 WAITING 状态,只有等 ...

  3. java 线程由浅入深_Java多线程:由浅入深看synchronized的底层实现原理

    Java多线程:由浅入深看synchronized的底层实现原理-1.jpg (91.72 KB, 下载次数: 0) 2018-9-21 03:55 上传 前言 前俩篇文章,我们聊了聊线程/进程的概念 ...

  4. java 线程 组成_java多线程

    一:基本知识点 1.1线程与进程区别: 1.进程是资源分配的最小单位,线程是CPU调度的最小单位 2.一个进程由一个或多个线程组成 3.进程之间相互独立,每个进程都有独立的代码和数据空间,但同一进程下 ...

  5. java线程 教程_Java多线程系列教程

    Java多线程系列教程 多线程是Java中不可避免的一个重要主体.从本章开始,我们将展开对多线程的学习.接下来的内容是对Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), n ...

  6. java线程入门_java多线程快速入门(一)

    1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...

  7. java线程基础_Java多线程基础

    前言 在我们工作和学习的过程中,Java线程我们或多或少的都会用到,但是在使用的过程上并不是很顺利,会遇到各种各样的坑,这里我通过讲解Thread类中的核心方法,以求重点掌握以下关键技术点: 线程的启 ...

  8. java线程设计模式_JAVA多线程设计模式

    漫谈UML UML 类图 类和层次结构的关系 接口与实现 聚合 访问控制 类间的关联性 顺序图 处理流程和对象间的协调 时序图 Introduction 1 Java语言的线程 Java语言的线程 何 ...

  9. java线程 stop()_java 多线程5: java 终止线程及中断机制 (stop()、interrupt() 、interrupted()、isInterrupted())...

    JAVA中有3种方式可以终止正在运行的线程 ①线程正常退出,即run()方法执行完毕了 ②使用Thread类中的stop()方法强行终止线程.但stop()方法已经过期了,不推荐使用 ③使用中断机制i ...

最新文章

  1. 背口诀14天精通c语言pdf下载,C语言必背18个经典程序
  2. 函数加上简单用户名密码认证
  3. UVA 11383 Golden Tiger Claw 金虎爪(KM算法)
  4. 在进行文字自绘时,自动换行打印
  5. 微信小程序横版日历,tab栏
  6. 经典高清C语言 The C Programming Language
  7. 矩形覆盖-----批了外皮的亲蛙跳
  8. MATLAB simulink 2FSK调制与解调实验,附仿真文件(西电B测)
  9. macOS 汇编指南
  10. IT管理员喜欢OpManager的十大原因
  11. 优秀软件测试工程师必读书籍推荐
  12. 让你的网站用上炫酷的中文字体
  13. 帝国PHP二次开发,帝国CMS二次开发基本问题汇总
  14. js鼠标经过切换图片
  15. C语言 —— 存储类相关的关键字 (持续更新中....)
  16. CSS学习笔记 | CSS复合选择器
  17. 一个清华保送生妈妈对竞赛的感受,自主招生家长都要看看!
  18. NYOJ-1273-宣传墙
  19. html游戏手柄,纯CSS3实现的游戏控制手柄
  20. Linux C/C++ 调试的那些“歪门邪道”

热门文章

  1. js保存网络图片至本地
  2. JavaScript:原型设计模式
  3. Open3d之ubuntu18.04源码编译open3d
  4. 解决Failed to connect to raw.githubusercontent.com port 443的办法
  5. 查询结果不跳转页面_商标检索查询的流程步骤是什么?
  6. 第十三天-企业应用架构模式-对象-关系元数据映射模式
  7. Unity 图片开启不同选项内存占用
  8. onCreate onStart onResume onStop onPause onDestroy onRestart onWindowFocusChanged
  9. Linux命令解释之crontab
  10. 程序员最常说的那些口头禅