随笔分类 - Thread
摘要:StampedLock提供三种模式的读写锁,分别为写锁、悲观读锁、乐观读锁。 记忆口诀是写写互斥、读写互斥、读读共享。 ##简介 StampedLock类,在JDK8中加入全路径为java.util.concurrent.locks.StampedLock。 功能与RRW(ReentrantRead
阅读全文
摘要:CompletableFuture实现异步调用 CompletableFuture.runAsync(() ->{ System.out.println("java本身的线程调用"); }); 使用Lambda 实现 Thread public static void main(String[] a
阅读全文
摘要:我们可能经常会用到 Thread.Sleep 函数来吧使线程挂起一段时间。那么你有没有正确的理解这个函数的用法呢? 思考下面这两个问题: 假设现在是 2008-4-7 12:00:00.000,如果我调用一下 Thread.Sleep(1000) ,在 2008-4-7 12:00:01.000 的
阅读全文
摘要:https://mp.weixin.qq.com/s/2iCKB2_DltUdCyea18iGfA
阅读全文
摘要:countDownLatch https://www.jianshu.com/p/e233bb37d2e6 深入理解CyclicBarrier原理 https://blog.csdn.net/qq_39241239/article/details/87030142
阅读全文
摘要:https://redspider.gitbook.io/concurrent/v/develop/
阅读全文
摘要:懒汉式 懒汉式:刚开始不初始化,在用的时候再进行初始化。 懒汉单例双重检查真的安全吗? 代码示例: /** * 懒汉式-双重检查-非线程安全 */ public class SingleDclNotsafe { private static SingleDclNotsafe singleDcl; /
阅读全文
摘要:什么是死锁: 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁。 举个例子: A 和 B 去按摩洗脚,都想在洗脚的时候,同时顺便做个头部按摩,13 技师擅长足底按摩,14 擅长头部按摩
阅读全文
摘要:什么是线程安全? 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在调用代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 怎么样才能做到线程安全? 解决线程安全的方案: 1.基于JVM的锁 无法解决分布式情况的问题 2
阅读全文
摘要:什么是线程池? 参考链接:https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E6%B1%A0/4745661 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。每个线程都使用默认的堆栈大小,
阅读全文
摘要:虽然使用ExecutorService可以让线程处理变的很简单, 可是有没有人觉得在结束线程运行时候只调用shutdown方法就可以了?实际上,只调用shutdown方法的是不够的。 我们用学校的老师和学生的关系来说明这个问题。 shutdown只是起到通知的作用 我们来假设如下场景:学校里在课上老
阅读全文
摘要:##显示锁的应用场景 1.ReadWriteLock 读写分离:可以有效地减少锁竞争,以提升系统性能 2.中断锁,超时锁 ##Lock读写分离 ###读写分离简介: 读写锁:在同一时刻允许多个读线程访问,但是当写线程访问,所有的写线程和读线程均被阻塞。读写锁维护了一个读锁加一个写锁,通过读写锁分离的
阅读全文
摘要:1.数据拆分多线程Callable处理 1.定义一个等于CPU核心数的线程池2.根据数据 List 处理每个线程可以分到的数量List3.Callable 线程处理数据4.Future 获取Callcable线程处理后的数据5.把 Future 获取的数据重新 addAll 进 List6.返回数据
阅读全文
摘要:原文地址 http://blog.csdn.net/qq_25806863/article/details/71214033 一般使用线程池执行任务都是调用的execute方法,这个方法定义在Executor接口中: public interface Executor { void execute(
阅读全文
摘要:分而治之: 把一个大问题分割成相同的小问题,小问题之间无关联. 动态规划: 把一个大问题分割成相同的小问题,小问题之间相互关联. 十大计算机经典算法: 快速排序、堆排序、归并排序、二分查找、线性查找、深度优化、广度优化、Dijkstra、动态规划、朴素贝叶斯分类。 其中属于分而治之的有:快速排序、归
阅读全文
摘要:ThreadLocal(线程的隔离) ThreadLocal 使每一个线程有独立的副本:它 提供了线程内存储变量的能力,这些变量不同之处在于每一个线程读取的变量是对应的互相独立的。通过get和set方法就可以得到当前线程对应的值。 ThreadLocal的应用场景: 在多线程并发情况下,有一个共享变
阅读全文
摘要:Volatile关键字--最轻量级的同步机制 1.保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。(实现可见性) 例如:如果一个old value -->修改为 new value ,这时的 new value 可以被其他的线程看到。 2.
阅读全文
摘要:synchronized关键字,一般称之为”同步锁“,用它来修饰需要同步的方法和需要同步代码块,默认是当前对象作为锁的对象。 同步锁锁的是同一个对象,如果对象发生改变,则锁会不生效。 锁失败的代码: public class IntegerSynTest { //线程实现Runnable接口 pri
阅读全文
摘要:线程中断:Interrupt、isInterrupted、interrupted 线程并不是抢占式的,线程是协作式的。 Interrupt:声明此线程中断,但是线程并不会立即中断; isInterrupted:判断此线程是否已中断,判断完后不修改线程的中断状态; interrupted:判断此线程是
阅读全文