[TOC] 当BufferedReader读取输入流中的数据,如果没有读到有效数据,程序将阻塞该线程的执行(使用InputStream的read()方法从流中读取数据时,如果数据源中没有数据,它也会阻塞线程),也就是传统的输入流、输出流都是阻塞式输入、输出。不仅如此传统的输入流、输出流都是通过字节的 ...
分类:
其他好文 时间:
2020-05-06 21:31:28
阅读次数:
71
二、线程间定制化调用通信 要使多线程之间按顺序调用,实现A->B->C按顺序输出,使用Lock锁实现,通过Lock锁创建三个Condition实例(三把钥匙),通过不同的条件,调用不同钥匙的awite()跟singnal()方法,阻塞或唤醒其他线程 代码实现: package com.jenne.m ...
分类:
编程语言 时间:
2020-05-06 20:03:21
阅读次数:
78
Doug lea 可重入 同一线程某方法获取该锁后,如果再另一方法尝试再获取锁,不会被阻塞。 关键字:同一线程 不同方法 阻塞 公平 非公平 Sync接口的不同静态内部类实现 实现了两方法 tryAcquire lock 设计模式中的模板模式 FairSync NonFairSync static ...
分类:
其他好文 时间:
2020-05-06 12:05:36
阅读次数:
120
什么是应用服务雪崩 雪崩问题 分布式系统都存在这样一个问题,由于网络的不稳定性,决定了任何一个服务的可用性都不是 100% 的。当网络不稳定的时候,作为服务的提供者,自身可能会被拖死,导致服务调用者阻塞,最终可能引发雪崩连锁效应。 缓存雪崩 当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在 ...
分类:
其他好文 时间:
2020-05-06 11:53:23
阅读次数:
69
一、什么是阻塞队列 阻塞队列是一个队列,在数据结构中起的作用如上图;当队列是空的,从队列中获取元素的操作将会被阻塞;当队列是满的,从队列中添加元素的操作将会被阻塞 1.为什么需要BlockingQueue: 好处是我们不需要关心什么时候需要阻塞线程,什么时候需要唤醒线程,因为这一切BlockingQ ...
分类:
其他好文 时间:
2020-05-06 09:14:13
阅读次数:
71
线程池的状态 RUNNING:接收新的任务,执行阻塞队列中的任务 SHUTDOWN:不接受新任务,但是仍然可以处理阻塞队列中的任务 STOP:不接受新任务,不处理阻塞队列中的任务,中断正在处理的任务 TIDYING:所有任务已终止,workerCount(工作线程数等于0),进入TIDYING状态将 ...
分类:
编程语言 时间:
2020-05-05 23:37:13
阅读次数:
94
Lua中的协程和多线程很相似,每一个协程有自己的堆栈,自己的局部变量,可以通过yield-resume实现在协程间的切换。不同之处是:Lua协程是非抢占式的多线程,必须手动在不同的协程间切换,且同一时刻只能有一个协程在运行。并且Lua中的协程无法在外部将其停止,而且有可能导致程序阻塞。 协同程序(C ...
分类:
其他好文 时间:
2020-05-05 23:16:24
阅读次数:
61
ArrayBlockingQueue介绍 ArrayBlockingQueue是数组实现的线程安全的有界的阻塞队列。 线程安全是指,ArrayBlockingQueue内部通过“互斥锁”保护竞争资源,实现了多线程对竞争资源的互斥访问。 有界是指,ArrayBlockingQueue对应的数组是有界限 ...
分类:
编程语言 时间:
2020-05-05 20:32:18
阅读次数:
67
原文作者: xingguang 原文链接: "https://www.tiance.club/post/570064033.html" Server的两种运行模式介绍 单线程模式(SWOOLE_BASE) 这种模式就是传统的异步非阻塞 Server 。与Nginx和Node.js等程序是完全一致的。 ...
分类:
其他好文 时间:
2020-05-05 12:30:10
阅读次数:
78
kbhit kbhit()是一个C和C++函数,用于非阻塞地响应键盘输入事件。其中文可译为“键盘敲击”(keyboard hit)。 函数名:kbhit() 功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。 用 法:int kbhit(void); C++语言包含头文件: ...
分类:
其他好文 时间:
2020-05-05 01:08:23
阅读次数:
107