线程
ff445566
秀的嘞
展开
-
线程基础学习一
1.线程的五个状态创建、就绪、运行、阻塞、终止2.start之后并不一定是立即执行,代表的是就绪状态;3.阻塞状态: 阻塞状态是正在运行的线程由于某种原因放弃cpu的使用权,进入就绪状态;有三种类型:①运行的线程执行wait方法,线程被jvm放入等待池中;②运行的线程获取同步锁时,该同步锁被别的线程占用,线程被jvm放入同步锁中;③运行的线程执行sleep方法或join...原创 2019-06-20 09:32:36 · 112 阅读 · 0 评论 -
线程学习之消费者生产者
一种方案:用synchronize,+flag while判断;在生产者的时候,如果为false则进行生产 ,然后改变false为true,唤醒所有线程;如果为true,则让当前线程进入等待;在消费者的时候,如果为true 则进行消费,然后改变true为false,唤醒所有线程;如果为false,则让当前线程进入等待;public class Resource { ...原创 2019-06-22 09:10:58 · 126 阅读 · 0 评论 -
线程学习之锁,ReentrantLock,Synchronize
一.ReentrantLock特点:1.1 是独占锁并且是可重入的:独占互斥的,需要手动释放锁;可重入的,但是要释放相同次数的锁;1.2 默认是非公平锁,也可以实现公平锁:非公平锁:当前线程直接尝试获取锁,不管自己是不是身处队尾;公平锁:按照队列顺序来,前面还有就等待;创建的时候,加上参数true是公平锁,公平锁能够避免线程饥饿1.3 可以获取锁时限等待:...原创 2019-06-22 12:09:28 · 190 阅读 · 0 评论 -
线程基础学习二
一.什么是死锁:当两个现场都持有对方需要的资源,而双方都处于循环等待的状态;条件是:互斥条件 :二者之间是互斥的。当一个线程占用着资源是,另一个线程只能等待;请求和保持条件: 需要的资源在别的线程手中时,只能等待资源得到释放不打断:不去强制性打断;死循环;避免死锁的方式:1.加超时释放;等待一段时间之后,无法获取,进行回退,在释放已获得的锁;缺点 :需要自己...原创 2019-06-23 15:42:16 · 126 阅读 · 0 评论 -
jvm学习
一.内存模型堆 : 存放实例对象,堆区分为老年代和新生代;栈: 虚拟机栈 是方法执行的内存模型每个方法的从开始执行到执行完成,对应的都是一个栈帧从入栈到出栈的操作。栈帧是栈的基本单位,栈帧包括 局部变量区’、操作数栈、帧数据区。局部变量表中存放的: 各种数据的基本类型,对象的引用,。操作数栈中存放的是:临时的数据。帧数据区中存放的是:一些数据,如常量池解析的支...原创 2019-06-24 22:23:23 · 196 阅读 · 0 评论 -
java记录一
一 问题java类的初始化顺序:加载 父类静态变量,静态代码块 (并列)→加载 子类静态变量,静态代码块 (并列)→加载 父类 普通代码块 普通成员变量 (并列)→基类构造函数 →加载 子类普通代码块 普通成员变量 (并列) →加载 子类构造函数 。对方法区和永久区的理解以及它们之间的关系:方法区:又叫静态区,存放的是class类,静态变量,静态方法...原创 2019-06-29 23:27:42 · 265 阅读 · 0 评论