公众号:架构师与哈苏
关注公众号进入it交流群! 公众号:架构师与哈苏 不定时都会推送一些实用的干货。。。
摘要: 1.可见性 本质是在告诉jvm当前变量在寄存器(工作内存)中的值不确定,需要从主存中读取。 2.禁止重排序 对它执行的指令不可以乱序,防止了其他线程拿到一个半初始化的对象,使用内存屏障。 阅读全文
posted @ 2021-08-05 17:08 公众号/架构师与哈苏 阅读(24) 评论(0) 推荐(0) 编辑
摘要: synchronized关键字 1.原子性 2.可见性 理解 java早期版本中,synchronized属于重量级锁,效率底下,java的线程是映射到操作系统的原生线程之上的。 唤起和挂起,都需要原生系统帮忙完成。 java6之后java官方从jvm层面对synchronized较大的优化,如:自 阅读全文
posted @ 2021-08-05 16:52 公众号/架构师与哈苏 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 两个方法都可以向线程池提交任务,execute()方法的返回类型是void,它定义在Executor接口中,而submit()方法返回有计算结构的Future对象,它定义在ExecutorService接口中,它拓展了Executor接口,其他线程池类像ThreadPoolExecutor和Sche 阅读全文
posted @ 2021-08-05 16:21 公众号/架构师与哈苏 阅读(249) 评论(0) 推荐(0) 编辑
摘要: Yield方法可以暂停当前正在执行的线程对象,让其他有相同优先级的线程执行。它是一个静态方法而且只保证当前线程放弃CPU占用而不能保证其它线程一定能占用CPU,执行yield()的线程有可能在进入到暂停状态后马上又被执行。 Thread t1 = new Thread(() -> { System. 阅读全文
posted @ 2021-08-05 15:45 公众号/架构师与哈苏 阅读(109) 评论(0) 推荐(0) 编辑
摘要: SynchronizedMap实现上在调用Map的所有方法是,对整个map进行了同步! public V put(K key, V value) { synchronized (mutex) {return m.put(key, value);} } ConcurrentHashMap的实现却更加精 阅读全文
posted @ 2021-08-05 11:47 公众号/架构师与哈苏 阅读(42) 评论(0) 推荐(0) 编辑
摘要: /** * 控制线程的执行循序 T1 -> T2 -> T3 * join实现 */ public static void join(){ Thread t1 = new Thread(() -> { System.out.println("hello my is T1!"); }); Thread 阅读全文
posted @ 2021-08-05 11:34 公众号/架构师与哈苏 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 1.底层实现上来说? Synchronized是JVM层面的锁,是Java关键字,通过monitor对象来完成。 ReentranLock是API层面的锁底层使用AQS。 2.是否可手动释放锁? synchronized不需要用户手动释放锁。 ReentranLock可以手动释放锁,一般通过lock 阅读全文
posted @ 2021-08-05 11:15 公众号/架构师与哈苏 阅读(242) 评论(0) 推荐(0) 编辑