摘要:Java对象头 以32位虚拟机为例 普通对象 数组对象 mark word(32bits) 看后面两位即可区分哪种锁,无所和偏向锁需要看biased_lock的值是1还是0 工作原理 Monitor被翻译为监视器或管程 每个Java对象都可以关联一个Monitor对象,如果使用synchronize
阅读全文
摘要:线程安全分析 成员变量和静态变量是否线程安全? 如果它们没有共享,则线程安全 如果它们被共享了,根据它们的状态是否能够改变,又分两种情况 如果只有读操作,则线程安全 如果有读写操作,则这段代码是临界区,需要考虑线程安全 例如成员变量list,被两个线程访问,并进行读写操作,没有措施导致线程不安全 p
阅读全文
摘要:买票&转账问题 1、买票问题 现象 模拟2200人来买票,总票数为2000张票。出现线程安全问题:卖票超过总票数 public class ExerciseSell { public static void main(String[] args) { //卖票窗口,有2000张票 TicketWin
阅读全文
摘要:synchronized 1、多线程之间容易出现线程安全问题 一个数由两个线程计算,一个线程加5000,另一个线程减5000,得出结果不为0 static int count = 0; public static void main(String[] args) throws Interrupted
阅读全文
摘要:线程状态演示 操作系统层面有5中状态 Java中有6种状态 NEW、 RUNNABLE、 BLOCKED、 WAITING、 TIMED_WAITING、 TERMINATED Thread源码中就有显示,打印出来 演示 @Slf4j public class TState { public sta
阅读全文
摘要:线程常用方法介绍 1、方法概述 | 方法说明 | static | 功能说明 | 注意 | | : | : | | | | start() | | 启动一个新线程,在新的线程运行run方法中的代码 | start方法只是让线程进入就绪,里面代码不一定立刻运行(CPU的时间片还没分给它)。每个线程对象
阅读全文
摘要:线程创建方法 1、继承Thread,重写run方法 private static void one() { class T extends Thread{ @Override public void run() { log.debug("one is running..."); } } T t =
阅读全文
摘要:1、什么是进程、线程、并发、并行 一、进程线程 1、进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至CPU,数据加载至内存。在指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了
阅读全文