- 博客(7)
- 收藏
- 关注
原创 锁升级过程
synchronized 作用在方法上,锁对象是当前实例 synchronized 作用在静态方法上,锁对象是当前类对象 synchronized 作用在代码快上,锁对象需要提供锁的对象 java6 版本以后对 synchronized 做了优化,引入多种锁状态: ...
2022-05-07 17:58:46
411
原创 ThreadLocal
threadLocal 为线程私有,使用方式 HashMap hashMap = new HashMap(); hashMap.put("threadName",Thread.currentThread().getName()); ThreadLocal local = new ThreadLocal(); local.set(hashMap); System.out.println(((HashMap)loc
2022-04-21 14:15:41
141
原创 Spring Boot 自动装配
服务启动类 打上 @SpingBootApplication 注解,在此注解中引入了@EnableAutoConfiguration @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class) public @interface EnableAutoC.
2022-04-08 14:53:11
307
原创 synchronized
synchronized 使用场景 synchronized 作用在方法上,锁对象是当前实例 synchronized 作用在静态方法上,锁对象是当前类对象 synchronized 作用在代码快上,锁对象需要提供锁的对象 java6 以后 对synchronized 进行了优化,引入多种锁状态,无锁、偏向锁、轻量级锁、重量级锁 锁可升级,不可降级(除偏向锁退回到 无锁状态) thread1 获取对象的monitor后就进入对象running 状态,此时没有其他 thread 竞争情
2022-04-08 09:46:34
332
原创 【无标题】
锁的实现--独占锁 看到这里,终于明白了 synchronized 是一个可重入锁。但是面试官要再问你,可重入锁的原理是什么? 重入锁实现可重入性原理或机制是:每一个锁关联一个线程持有者和计数器,当计数器为 0 时表示该锁没有被任何线程持有,那么任何线程都可能获得该锁而调用相应的方法;当某一线程请求成功后,JVM会记下锁的持有线程,并且将计数器置为 1;此时其它线程请求该锁,则必须等待;而该持有锁的线程如果再次请求这个锁,就可以再次拿到这个锁,同时计数器会递增;当线程退出同步代码块时,计数器会递..
2022-04-02 14:30:01
121
原创 并发场景 使用Unsafe 的CAS 创建对象、数组
获取Unsafe 实例 public static Unsafe getUnsafe() throws IllegalAccessException, NoSuchFieldException { Field unsafeField = Unsafe.class.getDeclaredField("theUnsafe"); //Field unsafeField = Unsafe.class.getDeclaredFields()[0];
2022-04-02 13:28:07
261
原创 Unsafe 中 park、unpatk的使用
java.util.concurrent.locks 包 中LockSupport.java 中线程挂起也采用Unsafe.park() 将线程挂起 public static void park(Object blocker) { Thread t = Thread.currentThread(); setBlocker(t, blocker); UNSAFE.park(false, 0L); setBlocker(t, nu..
2022-04-02 11:25:43
778
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅