并发队列 在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论哪种都继承自Queue。 一、ConcurrentLinkedQueue ConcurrentLinkedQueue:是一个适 ...
分类:
其他好文 时间:
2020-03-23 17:07:48
阅读次数:
57
socket操作函数read/write和recv/send用法基本相同,后者比前者多了一个flag参数。详见套接字I/O函数。如果是阻塞socket,执行读操作时,如果socket接收缓存区没有数据会阻塞等待数据;执行写操作时,如果socket发送缓存区没有足够的空间存放此次写入的数据,则会阻塞等 ...
分类:
系统相关 时间:
2020-03-23 15:17:57
阅读次数:
117
缘起我在看Spring的源码时,发现了一个隐藏的问题,就是父类方法(Method)在子类实例上的反射(Reflect)调用。初次看到,感觉有些奇特,因为父类方法可能是抽象的或私有的,但我没有去怀疑什么,这可是Spring的源码,肯定不会有错。不过我去做了测试,发现确实是正确的,那一瞬间竟然给我了一丝 ...
分类:
编程语言 时间:
2020-03-23 09:43:08
阅读次数:
65
Linux线程条件变量成为取消点的陷阱 使用 pthread_cancel() 时,线程往往不会直接退出,而需要运行到取消点。 pthread_cond_wait() 作为线程常见的一种阻塞,它也是一个取消点。所以,处于条件变量阻塞的线程在接收到取消信号就会直接退出。 然而,由于条件变量需要搭配互斥 ...
分类:
编程语言 时间:
2020-03-23 00:30:29
阅读次数:
92
179. Redis 是什么?都有哪些使用场景? Redis 是一个使用 C 语言开发的高速缓存数据库。 Redis 使用场景: 记录帖子点赞数、点击数、评论数; 缓存近期热帖; 缓存文章详情信息; 记录用户会话信息。 数据缓存功能 分布式锁的功能 支持数据持久化 支持事务 支持消息队列 存储方式不 ...
分类:
编程语言 时间:
2020-03-22 23:50:35
阅读次数:
57
配置springcloud的gateway的时候,需要用到webflux,所以需要学习一下。以下是目前我的理解,可能不正确,但是会持续修正。 什么是webflux?目前的认知是异步非阻塞IO的webMVC,因为之前的Springmvc是基于同步阻塞IO模型的Servlet实现的,包括tomcat,j ...
分类:
Web程序 时间:
2020-03-22 19:44:56
阅读次数:
166
1.简介 可重入锁ReentrantLock自 JDK 1.5 被引入,功能上与synchronized关键字类似。所谓的可重入是指,线程可对同一把锁进行重复加锁,而不会被阻塞住,这样可避免死锁的产生。ReentrantLock 的主要功能和 synchronized 关键字一致,均是用于多线程的同 ...
分类:
编程语言 时间:
2020-03-22 19:24:01
阅读次数:
85
第四部分:高级线程 非阻塞同步 前面我们说过,即使在分配或增加字段的简单情况下,也需要同步。尽管锁定始终可以满足此需求,但是竞争性锁定意味着线程必须阻塞,从而遭受上下文切换的开销和调度的延迟,这在高度并发且对性能至关重要的情况下是不希望的。 .NET Framework的非阻塞同步结构可以执行简单的 ...
分类:
编程语言 时间:
2020-03-22 15:48:32
阅读次数:
83
[toc] js 单线程模型 JavaScript 是单线程、非阻塞的一种语言,只有一个主线程,同时只能执行一个任务。 js 使用单线程是为了简单化 js 中的栈、堆和消息队列 栈 存放的是调用函数的记录——调用帧 堆 存放的是对象 消息队列 + 包含待处理消息的队列 + 每个消息都关联了一个回调函 ...
分类:
其他好文 时间:
2020-03-22 14:07:15
阅读次数:
86
异步:某个事情需要10秒.而我只需要调用一个函数帮我做,我可以干其他事. 同步:某个事情需要10秒完成,我等待他完成之后再继续后面的工作 阻塞:调用结果返回之前,当前线程会被挂起,一直处于等待消息通知,不能够执行其他业务,等待当前函数返回 非阻塞:不能立刻得到结果之前,该函数不会阻塞当前线程,而会立 ...
分类:
其他好文 时间:
2020-03-21 18:25:19
阅读次数:
60