随笔分类 - 多线程
摘要:https://mp.weixin.qq.com/s/t1xU4rJFsHjzF9uWkXFjGA
阅读全文
摘要:https://mp.weixin.qq.com/s/sA01gxC4EbgypCsQt5pVog 公平锁非公平锁 非公平锁: static final class NonfairSync extends Sync { private static final long serialVersionU
阅读全文
摘要:https://www.cnblogs.com/duanxz/p/6063697.html
阅读全文
摘要:线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 Executors 返回的线程池对象的弊端如下: 「FixedThreadPool和SingleThreadPool」:允许的
阅读全文
摘要:java线程的六种状态 一、新建状态(NEW) 即用new关键字新建一个线程,这个线程就处于新建状态。 二、运行状态(RUNNABLE) 操作系统中的就绪和运行两种状态,在Java中统称为RUNNABLE。 就绪状态(READY) 当线程对象调用了start()方法之后,线程处于就绪状态,就绪意味着
阅读全文
摘要:JavaSE1.6为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁",在JavaSE1.6中,锁共有4种状态,级别从低到高依次是:无锁状态,偏向锁状态,轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级.锁可以升级但不能降级,意味着偏向锁升级成轻量级锁后不能降级成偏向锁.
阅读全文
摘要:https://blog.csdn.net/riemann_/article/details/104704197 一、前言在开发过程中,好多场景要用到线程池。每次都是自己根据业务场景来设置线程池中的各个参数。这两天又有需求碰到了,索性总结一下方便以后再遇到可以直接看着用。虽说根据业务场景来设置各个参
阅读全文
摘要:下面的代码,在命令行执行 javac,然后再执行javap -v -p,就可以看到它具体的字节码。 public class SynchronizedTest { public void methodA(){ synchronized (this){ } } public synchronized
阅读全文
摘要:Fork/Join框架是Java 7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 Fork/Join框架的设计 1.任务分割:首先Fork/Join框架需要把大的任务分割成足够小的子任务,如果子任务比较大的话还要对子任务进行继续分
阅读全文
摘要:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=1#/detail/pc?id=6 JUC 是 Java 提供的用于多线程处理的工具类库,来看其中的常用工具类的作用,如下图所示。 如上图所示,第一行的类都是基本数据类型的原子类,包括 At
阅读全文
摘要:https://kaiwu.lagou.com/course/courseInfo.htm?courseId=1#/detail/pc?id=6 考察点讲解完本课时的知识点,总结下面试考察点。 要理解线程同步与互斥的原理,包括临界资源、临界区的概念,知道重量级锁、轻量级锁、自旋锁、偏向锁、重入锁、读
阅读全文
摘要:转 https://www.cnblogs.com/lfs2640666960/p/11488629.html 金九银十跳槽季已经开始,作为 Java 开发者你开始刷面试题了吗?别急,我整理了71道并发相关的面试题,看这一文就够了! 1、在java中守护线程和本地线程区别? java中的线程分为两种
阅读全文
摘要:https://cloud.tencent.com/developer/article/1451817
阅读全文
摘要:https://www.cnblogs.com/heyq/p/9013783.html
阅读全文
摘要:死锁发生的四个必要条件 互斥:一个资源每次只能被一个进程使用,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该资源,则请求进程只能等待。 请求与保持:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻塞,但对自己已获得的资源保持不放。 不可抢
阅读全文
摘要:转 :https://www.jb51.net/article/137750.htm 怎么使用数组来实现队列,我们需要四个变量:Object[] array来存储队列中元素,headIndex和tailIndex分别记录队列头和队列尾,count记录队列的个数。 1.因为数组的长度是固定,所以当co
阅读全文
摘要:Semaphore 可以认为是广义锁 ,共享锁, Semaphore可以理解为信号量,用于控制资源能够被并发访问的线程数量,以保证多个线程能够合理的使用特定资源。Semaphore就相当于一个许可证,线程需要先通过acquire方法获取该许可证,该线程才能继续往下执行,否则只能在该方法出阻塞等待。当
阅读全文
摘要:https://www.cnblogs.com/xiaoxi/p/7910868.html 总结 1、如果生产者、消费者都是1个,那么flag标记可以用if判断。这里有多个,必须用while判断。 2、在while判断的同时,notify函数可能唤醒本类线程(如一个消费者唤醒另一个消费者),这会导致
阅读全文
摘要:说一下java.lang.Runnable吧,它是一个接口,在它里面只声明了一个run()方法,由于run()方法返回值为void类型,所以在执行完任务之后无法返回任何结果。 Callable位于java.util.concurrent包下,它也是一个接口,在它里面也只声明了一个方法,只不过这个方法
阅读全文
摘要:转:https://www.jianshu.com/p/fb79f074be28 数组的长度在创建时就必须确定,如果数组长度小了,那么ArrayBlockingQueue队列很容易就被阻塞,如果数组长度大了,就容易浪费内存。 而队列这个数据结构天然适合用链表这个形式,而LinkedBlockingQ
阅读全文