substance
substance
全部文章
分类
未归档(185)
题解(7)
归档
标签
去牛客网
登录
/
注册
substance的博客
做最好的自己
全部文章
(共184篇)
线程重入
线程重入:是指线程在获得这个锁之后,再次使用这个锁就不会再被这个锁所阻塞住。 线程重入,原先我们对死锁的概念只是认为在多个线程之间;那么,如果单个线程,需要对两把锁访问,并且满足以下四个条件:互斥使用资源1、资源二;不可抢占资源1,资源二;请求与保持:即请求锁2时依旧保持锁1的占用;锁之间构成一个闭...
2022-04-15
0
292
死锁
死锁的含义:两个线程同步执行,线程A需要使用线程B所占用的锁,线程B需要使用线程A想要占用的锁。此时就会产生死锁(并发执行的情况下会发生) 死锁产生的条件: 1.互斥使用:资源统一时刻只能被一个线程所占用 2.不可抢占:资源只能由资源的拥有者释放,不能被资源的请求者所侵占。 3.请求和保持:线程在请...
2022-04-15
0
370
对象头
对象头主要是由MarkWord(锁的信息和分代信息)标志字段和KClass Pointer类型指针两部份构成。 背景:锁升级的过程包括四个锁: 1.1无锁:无线程使用是数据时,就没有必要上锁。 1.2偏向锁:只有一个线程时,同样不上锁,但是这个数据会偏向这个线程。 1.3轻量锁:少量线程争抢时,对于...
2022-04-13
0
224
synchronized原理
//简单的小例子观察字节码文件的差异: package com.ydlclass.lock; public class Test { public static void main(String[] args) { synchronized (Test.class){ ...
2022-04-13
0
304
java锁机制
synchronize:并发编程中的元老级角色,jdk1.6之前的由于上锁的操作的性能开销太大,所以这种锁又叫做重量级锁,之后jdk1.6以后引入偏 向锁和轻量级锁对其进行了一系列的优化。 synchronize可以锁的对象包括:成员方法,静态方法,代码块(类对象,调用该方法的对象this,对象)...
2022-04-13
0
299
实现线程安全的几种方法
1.数据不可变:由于一切不可变的对象是线程安全的,所以对于一些对象自身就是线程安全的:final修饰的基础数据类型。字符串类型,以及final修饰的引用数据类型不是线程安全的;这些不可变的对象成为(immutable)。 2.互斥同步:互斥是方法,同步是目的;同步是指:多个线程并发的访问共享的数据时...
2022-04-13
0
639
线程安全(窗口售票小程序)
package com.ydlclass.thread; public class WindowSellTickets implements Runnable{ private static int count = 100; String name; public Win...
2022-04-10
0
402
线程安全问题之线程争抢(线程问题三)
线程争抢:当多个线程同时争抢共享资源,并且修改共享资源的时候。就极其容易发生线程争抢的问题。线程争抢也同样会导致脏数据的产生。 线程争抢: package com.ydlclass.thread; public class ConflictOfThread {//线程争抢 //为了解决线程...
2022-04-10
0
529
JMM存在的问题(可见性问题)
package com.ydlclass.thread; //volatile的两个作用是,禁止指令重排,解决内存的可见性问题 public class InvisibleProblem { public volatile static boolean flag = false; /...
2022-04-10
0
312
JMM存在的问题(指令重排问题)
(1)指令乱排(指令乱排的好处是可以提高处理的速度,但同时可能引发安全性问题),例如下面的案例: public class InorderCode { //指令重排的代码验证 private static int a = 0, b = 0; private static i...
2022-04-10
0
324
首页
上一页
7
8
9
10
11
12
13
14
15
16
下一页
末页