juc
文章平均质量分 66
北堂飘霜
如果不去争取,你想要的东西永远都不是你的!
展开
-
JUC 阻塞队列
场景对于阻塞队列,一个放一个取,有不同的方法。数据从一端进入。一端出。也有的是像栈堆一样的结构,先进去的反而后面出。核心方法1.放入数据(1)offer(anObject):表示如果可能的话,将anObject加到BlockingQueue里,即如果BlockingQueue可以容纳,则返回true,否则返回false.(本方法不阻塞当前执行方法的线程); (2)offer(E o, long timeout, TimeUnit unit):可以设定等待的时间,如果在指定的时间内,还不能原创 2021-09-17 11:25:56 · 67 阅读 · 0 评论 -
JUC 三大辅助类
场景JUC 中提供了三种常用的辅助类,通过这些辅助类可以很好的解决线程数量过多时 Lock 锁的频繁操作。这三种辅助类为:• CountDownLatch: 减少计数• CyclicBarrier: 循环栅栏• Semaphore: 信号灯减少计数 CountDownLatchCountDownLatch 类可以设置一个计数器,然后通过countDown 方法来进行减 1 的操作,使用 await 方法等待计数器不大于 0,然后继续执行 await 方法之后的语句。• CountDownLat原创 2021-09-12 15:55:14 · 88 阅读 · 0 评论 -
JUC Callable&Future 接口
场景目前我们熟知的创建线程的方法一般是两个,方法-一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程。但是,Runnable 缺少的一项功能是,当线程终止时(即 run()完成时),我们无法使线程返回结果。为了支持此功能,Java 中提供了 Callable 接口。Callable接口Callable 接口的特点如下(重点)• 为了实现 Runnable,需要实现不返回任何内容的 run()方法,而对于Callable,需要实现在完成时返回结果的 call()方法。•原创 2021-09-12 15:16:26 · 91 阅读 · 0 评论 -
JUC volatile关键字作用
场景有两个线程去改动一个成员变量,容易读脏数据。解决办法就是加volatile关键字原理所有线程的共享变量都存储在主内存中,每一个线程都有一个独有的工作内存,每个线程不直接操作在主内存中的变量,而是将主内存上变量的副本放进自己的工作内存中,只操作工作内存中的数据。当修改完毕后,再把修改后的结果放回到主内存中。每个线程都只操作自己工作内存中的变量,无法直接访问对方工作内存中的变量,线程间变量值的传递需要通过主内存来完成。上述的Java内存模型在单线程的环境下不会出现问题,但在多线程的环境下可能会出现脏原创 2021-09-12 14:58:46 · 57 阅读 · 0 评论 -
JUC 集合的线程安全问题
场景因为在工作的时候,不会去过度的考虑高并发的问题。大多数集合的使用都是一般的list,set,map。也不会有太大的问题。但是如果放在多线程的场景下,多个线程同时去操纵一个集合,问题甚多。集合安全问题代码展示List这里是一段代码 List<String> list = new ArrayList<>(); for (int i = 0; i < 300; i++) { new Thread(() -> {原创 2021-09-11 00:04:23 · 232 阅读 · 0 评论 -
多线程 虚假唤醒问题
场景直接上代码,可自己执行看结果。 public static void main(String[] args) { Communication communication = new Communication(); new Thread(() -> { for (int i = 0; i < 100; i++) { communication.add(); }原创 2021-09-10 21:18:17 · 94 阅读 · 0 评论 -
LOCK和Synchronized的区别
场景今天运用到了锁,记录一下lock和Synchronized的区别。Synchronizedsynchronized 是 Java 中的关键字,是一种同步锁。它修饰的对象有以下几种:修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;o 虽然可以使用 synchronized 来定义方法,但 synchronized 并不属于方法定义原创 2021-09-10 13:19:36 · 168 阅读 · 0 评论