synchronized处理线程wait() 和notifyAll() 时,同步代码块中不要包含Thread.sleep(5)语句: 结果花费1.6s; 花费时间11.2s; 测试调用代码: 当synchronized同步代码块中去掉Thread.sleep(5)时,结果一致,都是1.6s左右。 ...
分类:
移动开发 时间:
2019-11-13 17:57:46
阅读次数:
87
上一篇通过构建金字塔结构,来从不同的角度,由浅入深的对synchronized关键字做了介绍, 快速跳转:https://www.cnblogs.com/xyang/p/11631866.html 本文将从底层实现的各个“组件”着手,详细拆解其工作原理。 本文会分为以下4节内容: 第一节:介绍Mar ...
分类:
编程语言 时间:
2019-11-03 16:31:40
阅读次数:
98
1. 现在有线程T1、T2和T3。你如何确保T2线程在T1之后执行,并且T3线程在T2之后执行。 https://www.cnblogs.com/helios-fz/p/11216925.html 2. Java 中新的Lock接口相对于同步代码块(synchronized block)有什么优势? ...
分类:
编程语言 时间:
2019-10-29 11:28:03
阅读次数:
86
代码块—— 局部代码块: 存在与方法中,控制变量的生命周期(作用域) { 代码块; } 构造代码块: 在类中,提取构造方法中的共性,每次创建对象都会执行,并在构造方法执行之前执行 { 代码块; } 静态代码块 随着类的加载而加载,只加载一次,加载类时需要做的一些初始化,比如加载驱动 static{ ...
分类:
其他好文 时间:
2019-10-29 09:50:17
阅读次数:
78
定义:同时对多项任务加以控制 多线程: 进程:一个内存中正在运行的一个应用程序。 线程:进程中的一个执行流程。 多线程: 进程中有两个或两个以上并发的执行流程。 每个流程是一个线程。 每个线程都有自己的任务。 ---------------- 线程的状态: 1.新建; 2.就绪; 3.运行; 4.阻... ...
分类:
编程语言 时间:
2019-10-28 22:36:26
阅读次数:
111
1. 现在有线程T1、T2和T3。你如何确保T2线程在T1之后执行,并且T3线程在T2之后执行。 https://www.cnblogs.com/helios-fz/p/11216925.html 2. Java 中新的Lock接口相对于同步代码块(synchronized block)有什么优势? ...
分类:
编程语言 时间:
2019-10-22 20:44:59
阅读次数:
127
一、线程状态 NEW 新new出来,还没有执行start方法 RUNNABLE 可运行状态,或者在执行,或者在等待CPU分配时间 BLOCKED 当线程调用wait方法后,线程就进入了阻塞状态,等待获取锁然后进入同步代码块或者同步方法 WAITING 等待状态,线程调用wait方法后者join方法 ...
分类:
编程语言 时间:
2019-10-16 23:31:58
阅读次数:
131
Java提供了3个方法解决线程之间的通信问题,均是java.lang.Object类的方法,都只能在同步方法或者同步代码块中使用,否则会抛出异常。 ...
分类:
编程语言 时间:
2019-10-16 17:50:23
阅读次数:
159
加锁: 1.同步实例方法,锁是当前实例对象 2.同步类方法,锁的是当前类对象 3.同步代码块,锁是括号里面的对象 原理: JVM内置锁通过synchronized使用,通过内部对象Monitor(监视器锁)实现,基于进入与退出Monitor对象实现方法与代码块同步,监视器锁的实现依赖底层操作系统的M ...
分类:
其他好文 时间:
2019-10-16 00:31:04
阅读次数:
93
一、什么是sleep()? sleep()是Thread类的方法,导致线程暂停执行的时间,给其他线程执行机会,但是依然保持监控状态,过了指定时间会自动恢复执行,调用sleep()方法不会释放锁对象。 当调用sleep()方法后,当前线程进入阻塞状态。目的是让出cpu给其他线程运行的机会。但是由于sl ...
分类:
编程语言 时间:
2019-10-01 16:26:34
阅读次数:
110