概念阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。应用阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生 ... ...
分类:
编程语言 时间:
2019-12-12 01:14:35
阅读次数:
93
阻塞队列与普通的队列(LinkedList/ArrayList)相比,支持在向队列中添加元素时,队列的长度已满阻塞当前添加线程,直到队列未满或者等待超时;从队列中获取元素时,队列中元素为空 ,会将获取元素的线程阻塞,直到队列中存在元素 或者等待超时。 在JUC包中常用的阻塞队列包含ArrayBloc ...
分类:
数据库 时间:
2019-12-10 18:33:26
阅读次数:
96
package com.company.java.oop.instance; /** * 如何设计,才能保证如下类的实例对象 * 在内存中只有一份? * 1)让外界从一个池中去取对象(通过池保证类的实例在池中一份) * 2)让外界直接通过类的静态方法获取类内部创建的一个实例。 */ class Si ...
分类:
其他好文 时间:
2019-12-08 10:32:57
阅读次数:
64
public class TestSyn{ /* * 线程同步:多个对象使用同一资源,当一个线程占有资源时,其他线程不能使用该资源,进入线程阻塞,等待使用线程释放资源 * 1.当一个线程访问“某对象”的“synchronized方法”或者“synchronized代码块”时, 其他线程对“该对象”的... ...
分类:
编程语言 时间:
2019-11-27 19:15:14
阅读次数:
62
线程的几种状态 1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法 2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行” 3. 阻塞(BLOCKED):表示线程阻塞于锁 4. 等待(WAITING):进入该状态 ...
分类:
编程语言 时间:
2019-11-26 19:35:38
阅读次数:
83
1 LockSupport 类使用类似信号量的机制,它为每一个线程准备了一个许可,如果许可可用,那么park()方法会立即返回,并且消费这个许可,如果许可不可用,就会阻塞, 而unpark()方法则使得一个许可变为可用。 这一个特点使得:即使unpark(0方法操作发生在park()方法之前,它也可 ...
分类:
编程语言 时间:
2019-11-16 23:05:06
阅读次数:
95
转 https://www.cnblogs.com/lfs2640666960/p/11488629.html 金九银十跳槽季已经开始,作为 Java 开发者你开始刷面试题了吗?别急,我整理了71道并发相关的面试题,看这一文就够了! 1、在java中守护线程和本地线程区别? java中的线程分为两种 ...
分类:
其他好文 时间:
2019-11-06 10:34:04
阅读次数:
65
我们的程序默认会有两个线程,一个是主线程,一个是负责垃圾回收的线程。如果代码不使用多线程,就只有主线程这一条干道。1.在主线程中调用Thread.Sleep(1000),表示主线程阻塞自己1秒。2.在主线程中使用子线程调用Join()方法,表示子线程告诉主线程你需要阻塞一会,直到我完成任务。两者虽然 ...
[toc] Event事件 用来控制线程的执行 查看对象e当前的信号状态, 默认为False 信号状态为False, 则当前线程阻塞 将e的信号状态设置为True, 被阻塞的线程进入非阻塞状态 线程池与进程池 基本概念 用来控制当前程序允许创建进程/线程的数量 防止程序创建的进程/线程过多, 超过硬 ...
分类:
编程语言 时间:
2019-10-24 23:45:47
阅读次数:
127
1.CountDownLatchCountDownLatch.wait()会使当前线程阻塞,直到CountDownLatch中的计数器递减完毕后继续执行。publicclassCountDownLatchDemo{privatefinalstaticLoggerlog=Logger.getLogger(AtomicIntegerCyclicBarrierDemo.class);publicstat
分类:
编程语言 时间:
2019-10-24 19:31:34
阅读次数:
66