其中有四个知识点我单独罗列了出来,属于多线程编程中需要知道的知识: 知识点1:X,T为泛型,为什么要用泛型,泛型和Object的区别请看:https://www.cnblogs.com/xiaoxiong2015/p/12705815.html 知识点2:线程池:https://www.cnblog ...
分类:
编程语言 时间:
2020-06-25 23:44:55
阅读次数:
111
并发性是一系列性能技术,专注于减少等待 如果你的程序中的一个任务由于程序控制之外的某些条件(通常是I/O)而无法继续,我们会说任务或线程阻塞 进程和线程 线程的调度: 分时调用 所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间 抢占式调度 优先让优先级较高的线程使用CPU,如果线程的 ...
分类:
编程语言 时间:
2020-06-25 15:40:37
阅读次数:
69
已剪辑自: https://www.jianshu.com/p/f1f2cd289205 是什么 LockSupport是一个线程阻塞工具类,所有的方法都是静态方法,可以让线程在任意位置阻塞,当然阻塞之后肯定得有唤醒的方法。 有什么用 接下面我来看看LockSupport有哪些常用的方法。主要有两类 ...
分类:
其他好文 时间:
2020-06-24 13:39:21
阅读次数:
84
1、定义 乐观锁和悲观锁其实是两种思想,用于解决并发场景下的数据竞争问题。 悲观锁:常用的锁基本上都是悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转 ...
分类:
其他好文 时间:
2020-06-21 21:40:58
阅读次数:
47
在 Java 发展史上曾经使用 suspend()、resume()方法对于线程进行阻塞唤醒,但 随之出现很多问题,比较典型的还是死锁问题。 解决方案可以使用以对象为目标的阻塞,即利用 Object 类的 wait()和 notify()方 法实现线程阻塞。 首先,wait、notify 方法是针对 ...
分类:
编程语言 时间:
2020-06-21 16:16:59
阅读次数:
114
阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当 队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消 费者是从队列里拿元素的线程。阻塞队列就是生产 ...
分类:
其他好文 时间:
2020-06-21 16:04:43
阅读次数:
78
CountDownLatch 1 前言 CountDownLatch是一种同步辅助工具类,它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成为止。(源码分析基于JDK1.8) CountDownLatch需要用给定的闩锁计数count初始化。await方法使当前线程阻塞(每执行一次coun ...
分类:
其他好文 时间:
2020-06-19 14:10:10
阅读次数:
60
synchronized锁的原理也是大厂面试中经常会涉及的问题,本文主要通过对以下问题进行分析讲解,来帮助大家理解synchronized锁的原理。 1.synchronized锁是什么?锁的对象是什么? 2.偏向锁,轻量级锁,重量级锁的执行流程是怎样的? 3.为什么说是轻量级,重量级锁是不公平的? ...
分类:
其他好文 时间:
2020-06-12 10:53:18
阅读次数:
50
在 Java 中通过锁来控制多个线程对共享资源的访问,使用 Java 编程语言开发的朋友都知道,可以通过 synchronized 关键字来实现锁的功能,它可以隐式的获取锁,也就是说我们使用该关键字并不需要去关心锁的获取和释放过程,但是在提供方便的同时也意味着其灵活性的下降。例如,有这样的一个场景, ...
分类:
编程语言 时间:
2020-06-12 00:32:55
阅读次数:
68
线程模型分类: 用户级线程(User Level Thread,ULT) 用户程序实现,不依赖操作系统核心,应用提供创建、同步、调度和管理线程函数来控制用汉语线程。不需要用户态/内核态切换,速度快。内核对UTL无感知,线程阻塞则进程(包括它的所有线程)阻塞。 内核级线程(KLT) 系统内核管理线程, ...
分类:
编程语言 时间:
2020-05-25 16:00:07
阅读次数:
62