首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
MenfreXu
掘友等级
Java开发小白
获得徽章 0
动态
文章
专栏
沸点
收藏集
关注
作品
赞
2
文章 0
沸点 2
赞
2
返回
|
搜索文章
最新
热门
Basic Of Concurrency(十八: 阻塞队列)
一个队列在队空和队满的情况下进行出队和进队操作会发生阻塞,这种队列我们称之为阻塞队列.队列在队空的情况下进行出队操作会发生阻塞,直到有一到多个队项入队为止.队列在队满的情况下入队会发生阻塞,直到有队项出列或队空的情况下. 我们可以看出一个线程从队列中取出队项,一个线程往队列中放…
Basic Of Concurrency(十七: Semaphores)
Semaphores是一个用于保证线程间相互发送信号且信号不会丢失的同步结构,与Lock类似,同样能够保证临界区的安全访问.在Java5java.util.concurrent包中已有相关实现,因此我们不需要自己手动实现.但仍然很有有必要知道怎么使用它们以及底层原理. 在Sem…
Basic Of Concurrency(十六: Reentrance Lockout)
Reentrance Lockout的情况类似于死锁和nested monitor lockout.Reentrance Lockout在先前的Java中的锁和Java中的读写锁两篇文章中都有提到. 我们可以注意到outer()和inner()方法签名中都有synchroniz…
Basic Of Concurrency(十五: Java中的读写锁)
读写锁是一个比前文Java中的锁更加复杂的锁.想象一下当你有一个应用需要对资源进行读写,然而对资源的读取次数远大于写入.当有两个线程对同一个资源进行读取时并不会有并发问题,所以多个线程可以在同一个时间点安全的读取资源.但是当一个线程需要对资源进行写入时,则其他线程的读写都不能同…
Basic Of Concurrency(十四: Java中的锁)
Lock跟Java中的synchronized关键字一样,都是用于线程的同步机制。不同的是Lock相比synchronized关键字提供更加丰富的功能和灵活性。 从Java5开始,java.util.concurrent.locks包中提供了几种不同的Lock实现,因此我们不需…
Basic Of Concurrency(十三: Slipped Conditions)
Slipped Conditions是指一个线程对一个确切的条件进行检查到操作期间,如果条件被其他线程访问到的话就会给第一个线程的执行结果造成影响。下面是一个简单的实例: 我们可以注意到lock()方法中有两个同步块。第一个同步块会让线程一直等待直到isLocked为false…
Basic Of Concurrency(十二: Nested Monitor Lockout)
可以注意到在lock()方法中的第一个synchronized构造块中传入的是"this"。第二个synchronized构造块中传入的是成员变量monitorObject。当isLocked为false并不会有任何问题,线程不会调用到monitor.wait()。但当isLo…
Basic Of Concurrency(十一: 饥饿与公平)
如果一个线程因为其他线程占满了而无法获取CPU运行时间,这种情况我们称之为“饥饿现象”.线程将一直饥饿下去,因为其他线程总能替代它获取CPU运行时间.解决这种情况的措施我们称之为“公平措施”.即让所有线程都能获得一次执行的机会. 优先级高的线程蚕食了优先级低的线程的所有CPU运…
Basic Of Concurrency(十: 死锁和预防)
死锁是指一到多个线程阻塞等待的锁被其他线程持有且不释放.当多个线程在同一时间按不同的顺序来获取相同的锁的情况下,会发生死锁. 例如,线程1持有锁A且尝试去获取锁B,而线程2持有锁B且尝试去获取锁A,那么死锁将会发生.线程1永远获取不到锁B, 而线程2则永远获取不到锁A.且它们都…
Basic Of Concurrency(九: 线程通讯)
线程通讯的目的是让线程之间可以相互发送信号.更多是能够让线程去等待其他线程的信号.如线程B等待线程A的信号用于指示数据已经准备就绪等待处理. 一个让线程通讯的简单方法是通过共享对象来设置信号量.线程A在同步代码块中设置布尔类型的成员变量hasDataToProcess为true…
下一页
个人成就
文章被点赞
29
文章被阅读
21,778
掘力值
686
关注了
18
关注者
40
收藏集
0
关注标签
18
加入于
2019-03-11