Java高并发编程
听风
你是无意穿堂风 偏偏孤倨引山洪
展开
-
[Java高并发编程详解]volatile和synchronized的区别
文章目录使用上的区别对原子性的保证对可见性的保证对有序性的保证其他使用上的区别volatile关键字只能修饰实例变量或者类变量,不能修饰方法或者参数、局部变量、常量等synchronized关键字不能用于变量的修饰,只能修饰方法或者代码块volatile修饰的变量可以为null,synchronized关键字同步语句的monitor不能为null对原子性的保证volatil无法保证原子性由于synchronized是一种排他的机制,因此被synchronized关键字修饰的同步代码是不能原创 2020-07-27 17:52:10 · 119 阅读 · 0 评论 -
[Java高并发编程详解]类的加载过程(未完待续...)
文章目录类的加载阶段各个阶段讲解类的主动使用和被动使用主动使用(6种情况会导致类的初始化)特殊情况类的加载阶段各个阶段讲解加载阶段:主要负责查找并加载class文件连接阶段:验证:确保class文件的正确性,比如版本,class的魔术因子准备:为类的静态变量分配内存,并且为其初始化默认值解析:把类中的符号引用转换为直接引用初始化阶段: 为类的静态变量赋予正确的初始值(代码编写阶段给定的值)类的主动使用和被动使用JVM虚拟机规定,每个类或接口 首次主动使用 才会对其进行初始化主动原创 2020-07-19 19:40:11 · 277 阅读 · 0 评论 -
[Java高并发编程] sleep和wait的区别
wait和sleep方法都可使线程进入阻塞状态wait和sleep都是可中断方法,被中断后会捕获中断异常wait是Object方法,而sleep是Thread类特有的wait方法必须在同步方法中执行,而sleep不需要线程在同步方法中执行sleep方法时,并不会释放monitor的锁,但是wait会释放monitor的锁sleep方法短暂休眠后会主动退出阻塞,而wait需要被其他线程中断(例如调用notify或者notifyAll)才能退出阻塞.[注意:这里的wait没有指定timeout].原创 2020-06-17 17:52:05 · 182 阅读 · 0 评论 -
[Java高并发编程]线程的生命周期 以及各状态之间的转换
1. NEW知识点当一个线程处于NEW状态时,他只是一个Thread类的对象,该线程并不存在,与你new 一个普通类对象没有什么区别当该对象调用start方法时,进入RUNNABLE状态2. RUNNABLE知识点该状态的线程拥有被执行的资格,但是并没有被执行,而是在等待CPU的调度.因为有RUNNING状态的存在,该线程不会直接进入BLOCKED和TERMINATED状态.状态切换CPU调度到该线程并执行该线程,进入RUNNING状态.3.RUNNING知识点一个处.原创 2020-06-09 20:01:23 · 273 阅读 · 0 评论