管道是最早的用来实现进程间通信的技术,有管道和FIFO(有名管道)之分,前者只能用于有继承关系的进程间通信,后者用于无继承(无fork() )关系进程间通信。 管道的内容存在于内核中,一个管道就是一个字节流。 使用管道注意的事项: 1)如果从空的管道中读取数据会被阻塞直到至少余一个字节被写入管道中为 ...
分类:
其他好文 时间:
2020-01-19 19:21:05
阅读次数:
79
volatile和synchronized的区别 volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 volatile仅能使用在变量级别;synchronized ...
分类:
其他好文 时间:
2020-01-13 19:51:51
阅读次数:
66
阻塞队列 如果我们想要在线程安全的场景下使用队列,只有两个选择,一个是上面讲过的 ConcurrentLinkedQueue,还有就是我们要将的阻塞队列。 从名字我们就可以判断出阻塞队列适用的场景,那就是生产者消费者模式。阻塞对垒的添加和删除操作在队列满或者空的时候会被阻塞。这就保证了线程安全。 阻 ...
分类:
编程语言 时间:
2020-01-12 21:50:31
阅读次数:
74
1.让一些线程阻塞直到另一些线程完成一系列操作后才被唤醒。 2.CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其它线程调用countDown方法会将计算器减1(调用countDown方法的线程不会阻塞),当计数器的值变成零时,因调用await方法 ...
分类:
其他好文 时间:
2020-01-04 22:44:03
阅读次数:
99
内核3.10,systemctl start docker 被阻塞,没有返回,查看状态为启动中。 某兄弟机器安装docker之后,发现systemctl start docker的时候阻塞,由于排查走了一些弯路,记录如下: level=warning msg="could not change gr ...
分类:
其他好文 时间:
2019-12-31 21:25:59
阅读次数:
334
CyclicBarrier 的中文意思是 "循环栅栏",简单理解就是一个可以循环利用的屏障。 用于让多个线程阻塞在屏障处,当屏障达到放开的条件,所有被阻塞的线程会继续执行,此时 CyclicBarrier 会自动重置。 阻塞线程在屏障处,调用 CyclicBarrier 对象的 await() 方法 ...
分类:
其他好文 时间:
2019-12-26 09:42:46
阅读次数:
110
死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 java 死锁产生的四个必要条件: 1>互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2>不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只 ...
分类:
编程语言 时间:
2019-12-24 20:49:12
阅读次数:
104
/** *LinkedTransferQueue是有容量的, * 当第一个生产者线程调用transfer时,如果没有消费者,会阻塞。 * 第二个生产者线程调用transfer时,如果没有消费者,会添加到队列的末尾。 * 直到有消费者进行消费时调用take方法,被阻塞的生产者线程才继续运行 */ /* ...
分类:
其他好文 时间:
2019-12-18 12:55:33
阅读次数:
48
并发原理: 几乎所有的IO接口都是阻塞型的,处理过程中线程将被阻塞,无法进行任何操作直到返回调用结果,或超时。 IO模型:系统内核 和 一个调用这个IO的线程 第一步 等待数据准备 第二部 将数据从内核拷贝到进程中 传统阻塞IO 用户线程发送IO请求(read操作)到系统内核,系统内核首先进行数据准 ...
分类:
其他好文 时间:
2019-12-09 21:42:57
阅读次数:
100
服务雪崩效应 当一个请求依赖多个服务的时候: 正常情况下的访问 但是,当请求的服务中出现无法访问、异常、超时等问题时(图中的I),那么用户的请求将会被阻塞。 如果多个用户的请求中,都存在无法访问的服务,那么他们都将陷入阻塞的状态中。 Hystrix的引入,可以 服务熔断服务降级 Hystrix断路器 ...
分类:
其他好文 时间:
2019-12-09 01:28:48
阅读次数:
73