随笔分类 -  JUC

Java并发编程知识梳理
摘要:在Java1.6之后,jvm对于synchronized进行了大量的优化, 锁消除:锁消除是JIT编译器对synchronized锁做的优化,在编译的时候,JIT会通过逃逸分析技术,来分析synchronized锁对象 锁粗化:这个意思就是,JIT编译器如果发现有代码里连续多次加锁和释放锁的代码,会 阅读全文
posted @ 2021-03-09 23:39 IT路上的小白 阅读(219) 评论(0) 推荐(0)
摘要:1.ThreadLocal是Java1.2提出来的一种对线程的所在执行的线程栈的局部变量 这个方式打印出来的就可以说明一个问题,不同的线程他们的的线程栈是不一样的,换句话当同一个方法被同一个不同的线程调用的时候,他们都会进入各自的线程之间的 栈内存之中。 public class Main { pu 阅读全文
posted @ 2021-01-24 18:05 IT路上的小白 阅读(488) 评论(0) 推荐(0)
摘要:守护线程是一种比较特殊的线程,一般用于处理后台的工作,它会随着调用线程的结束而技术: 看下面一段代码 package com.example.demo.threads; import java.util.concurrent.TimeUnit; /** * 守护线程 */ public class 阅读全文
posted @ 2021-01-15 22:58 IT路上的小白 阅读(383) 评论(0) 推荐(0)
摘要:一、基本使用 首先,TTL是用来解决ITL解决不了的问题而诞生的,所以TTL一定是支持父线程的本地变量传递给子线程这种基本操作的,ITL也可以做到,但是前面有讲过,ITL在线程池的模式下,就没办法再正确传递了,所以TTL做出的改进就是即便是在线程池模式下,也可以很好的将父线程本地变量传递下去,先来看 阅读全文
posted @ 2021-01-03 21:00 IT路上的小白 阅读(2150) 评论(0) 推荐(0)
摘要:转:https://www.cnblogs.com/hama1993/p/10400265.html 一、基本使用 我们继续来看之前写的例子: private static ThreadLocal tl = new ThreadLocal<>(); public static void main(S 阅读全文
posted @ 2021-01-03 20:59 IT路上的小白 阅读(327) 评论(0) 推荐(0)
摘要:转:https://www.cnblogs.com/hama1993/p/10382523.html 项目中我们如果想要某个对象在程序运行中的任意位置获取到,就需要借助ThreadLocal来实现,这个对象称作线程的本地变量,下面就介绍下ThreadLocal是如何做到线程内本地变量传递的, 一、基 阅读全文
posted @ 2021-01-03 20:58 IT路上的小白 阅读(208) 评论(0) 推荐(0)
摘要:之前学习过了阻塞队列(BiockingQueue)这里就不详细介绍了。 这里是队列的结构,他们都实现了Queue这个接口。 阻塞队列:阻塞队列与普通队列的区别在于,当队列是空的时,从队列中获取元素的操作将会被阻塞,或者当队列是满时,往队列里添加元素的操作会被阻塞。试图从空的阻塞队列中获取元素的线程将 阅读全文
posted @ 2020-07-15 11:12 IT路上的小白 阅读(969) 评论(0) 推荐(0)
摘要:public class CASDemo { public static void main(String[] args){ AtomicInteger atomicInteger = new AtomicInteger(5); System.out.println(atomicInteger.co 阅读全文
posted @ 2020-04-21 15:34 IT路上的小白 阅读(330) 评论(0) 推荐(0)
摘要:进程和线程 进程与线程最主要的区别是它们是操作系统管理资源的不同方式的体现。 准确来说进程与线程属于衍生关系。 进程是操作系统执行程序的一次过程,在这个过程中可能会产生多个线程。 比如在使用QQ时,有窗口线程, 文字发送的线程,语音输入的线程,可能不是很恰当,但是就是这个意思。 由于系统在线程之间的 阅读全文
posted @ 2020-04-20 23:12 IT路上的小白 阅读(168) 评论(0) 推荐(0)
摘要:详情:https://blog.51cto.com/turnsole/2120848 阅读全文
posted @ 2020-04-20 17:11 IT路上的小白 阅读(1857) 评论(0) 推荐(0)
摘要:思想:分而治之(跟mapreduce的思想是一样),简言之,大事化小; 相关类架构: 分支合并池 类比=> 线程池 相关类架构: ForkJoinTask 类比=> FutureTask 相关类架构: 递归任务:继承后可以实现递归(自己调自己)调用的任务 class Fibonacci extend 阅读全文
posted @ 2020-04-20 16:59 IT路上的小白 阅读(233) 评论(0) 推荐(0)
摘要:线程池的优势:线程池做的工作只要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。 它的主要特点为:线程复用;控制最大并发数;管理线程。 第一:降低资源消耗。通过重复利用已创 阅读全文
posted @ 2020-04-20 16:35 IT路上的小白 阅读(1026) 评论(0) 推荐(0)
摘要:在了解阻塞队列之前,先了解栈和队列。 栈:先进后出,后进先出 (类似于子弹夹里面的子弹) 队列:先进先出(类似于排队打饭,先来先得) 什么是 阻塞队列: 线程1往阻塞队列里添加元素,线程2从阻塞队列里移除元素当队列是空的,从队列中获取元素的操作将会被阻塞当队列是满的,从队列中添加元素的操作将会被阻塞 阅读全文
posted @ 2020-04-20 16:00 IT路上的小白 阅读(582) 评论(0) 推荐(0)
摘要:原理: 在信号量上我们定义两种操作: * acquire(获取) 当一个线程调用acquire操作时,它要么通过成功获取信号量(信号量减1), * 要么一直等下去,直到有线程释放信号量,或超时。 * release(释放)实际上会将信号量的值加1,然后唤醒等待的线程。 * * 信号量主要用于两个目的 阅读全文
posted @ 2020-04-20 15:46 IT路上的小白 阅读(239) 评论(2) 推荐(0)
摘要:原理: CyclicBarrier的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞, 直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。线程进入屏障通过CyclicBarrier的await() 阅读全文
posted @ 2020-04-20 15:45 IT路上的小白 阅读(294) 评论(0) 推荐(0)
摘要:原理: CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,这些线程会阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞),当计数器的值变为0时,因await方法阻塞的线程会被唤醒,继续执行。 import java.uti 阅读全文
posted @ 2020-04-20 15:42 IT路上的小白 阅读(154) 评论(0) 推荐(0)
摘要:不废话,直接上代码 //演示HashMap类的并发问题 @Test public void demo1() { Map<String, Integer> map = new HashMap<>(); Random random = new Random(); for (int i = 0; i < 阅读全文
posted @ 2020-04-20 11:05 IT路上的小白 阅读(152) 评论(0) 推荐(0)
摘要:Set 作为一个接口,它的实现类中主要是hashset,在多线程操作set的时候会出现问题,一下为一个列子 public static void main(String[] args) throws Exception { Set<String> set = new HashSet<>(); for 阅读全文
posted @ 2020-04-20 10:50 IT路上的小白 阅读(210) 评论(0) 推荐(0)
摘要:List : 在多线程操作List的时候,在一个线程里面add东西,list实际上的大小跟预计是不一样的 public void demo1() { List<String> list = new ArrayList<>(); Random random = new Random(); for (i 阅读全文
posted @ 2020-04-20 10:25 IT路上的小白 阅读(310) 评论(0) 推荐(0)
摘要:线程8锁,主要描绘多线程操作资源类时候的先后顺序问题 总结: package 第二季_25_锁; import java.util.concurrent.TimeUnit; /** * * @Description: 8锁 * 1 标准访问,先打印短信还是邮件 2 停4秒在短信方法内,先打印短信还是 阅读全文
posted @ 2020-04-20 10:06 IT路上的小白 阅读(422) 评论(0) 推荐(0)