JUC
JUC
星星的博客
一个java爱好者,希望与大家共同进步!
展开
-
使用两个线程交替打印0~100【大厂算法面试题】
题目描述 使用两个线程,交替打印0~100 解题思路 我们定义两个线程,轮流打印,当一个线程打印完以后,就唤醒另一个线程,并且自己进入等待状态。 代码实现 package com.coolstar.test; public class TurningRunner implements Runnable{ static int count = 0; static Object lock = new Object(); @Override public void run()原创 2021-07-17 20:00:47 · 329 阅读 · 0 评论 -
手写简单的Lock
前言 昨天的面试,让我知道了阅读源码的重要性,今天就手写三种简单Lock来进行JUC的巩固。 代码实现 1、简单的Lock package com.coolstar.locks; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; public class MyLock1 implements Lock {原创 2021-07-17 19:22:55 · 145 阅读 · 0 评论 -
初识ConcurrentHashMap
前言 今天看了一下ConcurrentHashMap的相关资料,在这里做一个总结。 正文 对于HashMap来说,最重要的两个方法就是get()和put()。一种最自然的想法就是对整个HashMap加锁,必然可以得到一个线程安全的对象。但是这样做,我们就认为加锁粒度太大。对于ConcurrentHashMap,它内部进一步细分了若干个小的HashMap,称之为段(SEGMENT)。默认情况下,一个ConcurrentHashMap被进一步细分为16个段。 如果需要在ConcurrentHashMap中增加一原创 2020-11-24 11:54:48 · 979 阅读 · 5 评论