![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 91
顾城猿
希望关注一下,本人Gitee:https://gitee.com/yuehaoke
展开
-
线程池详解
步骤1:自定义拒绝策略接口@FunctionalInterface // 拒绝策略步骤2:自定义任务队列// 1. 任务队列// 2. 锁// 3. 生产者条件变量// 4. 消费者条件变量// 5. 容量// 带超时阻塞获取try {// 将 timeout 统一转换为 纳秒try {// 返回值是剩余时间return t;// 阻塞获取try {try {return t;// 阻塞添加try {try {原创 2024-05-08 10:24:51 · 1198 阅读 · 0 评论 -
并发编程总结(二)
系统要求任一进程必须预先申请它所需要的全部资源,而且仅当该进程的全部资源要求能得到满足时,系统才能给予一次性分配,然后启动该进程运行,但是在分配时只要有一种资源不满足,系统就不会给进程分配资源。死锁的检测:检查死锁的办法就是由软件检查系统中由进程和资源构成的有向图是否构成一个或多个环路,若是,则存在死锁,否则不存在。允许系统在运行的过程中产生死锁,但是,系统中有相应的管理模块可以及时检测出已经产生的死锁,并且精确地确定与死锁有关的进程和资源,然后采取适当措施,清除系统中已经产生的死锁。原创 2024-05-06 10:18:21 · 773 阅读 · 0 评论 -
并发编程总结(一)
大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器 等),也有的程序只能启动一个实例进程(例如网易云音乐、360。家庭主妇雇了个保姆,她们一起这些事,这时既有并发,也有并行(这时会产生竞争,例如锅只有一口,一 个人用锅时,另一个人就得等待)有一种特殊的线程叫做守护线程,只要其它非守 护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束。进程基本上相互独立的,而线程存在于进程内,是进程的一个子集。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。原创 2024-05-02 14:50:54 · 850 阅读 · 0 评论 -
CAS 与 volatile
会让线程在没有获得锁的时 候,发生上下文切换,进入阻塞。synchronized 是基于悲观锁的思想:最悲观的估计,得防着其它线程来修改共享变量,我上了锁你们都别想 改,我改完了解开锁,你们才有机会。它可以用来修饰成员变量和静态成员变量,他可以避免线程从自己的工作缓存中查找变量的值,必须到主存中获取 它的值,线程操作 volatile。在这里就好比高速跑道,没有额外的跑 道,线程想高速运行也无从谈起,虽然不会进入阻塞,但由于没有分到时间片,仍然会进入可运行状态,还 是会导致上下文切换。原创 2024-05-02 10:36:08 · 11 阅读 · 0 评论