Java并发编程实战
梦江河
聊聊高并发,数据库,存储
展开
-
线程阻塞的原理
java使用Thread#sleep,Object#wait,LockSuppprt可以阻塞当前线程线程。那它们在操作系统内核是怎么回事?不会就猜,首先不同操作系统的实现肯定不一样。猜想是把线程从运行态变成阻塞态,阻塞态的线程也是在就绪队列,只不过优先级很低,所以调度程序不会分配cpu资源给它们。当sleep指定的时间到了线程就要被唤醒,猜想是操作系统内核有一个定时器,时间到了,内核就会改变对应线程的优先级,这样就可以被调度程序调度了。如果线程因为io等资源阻塞时,也是由运行态切换到阻塞态,也是被内原创 2021-03-20 00:01:51 · 1001 阅读 · 0 评论 -
谈谈Juc的无锁?
cas原子类阻塞队列:SynchronousQueue/LinkedTransferQueue并发队列:ConcurentLinkedQueue/ConcurrentLinkedDeque原创 2021-03-19 10:48:49 · 126 阅读 · 0 评论 -
Java并发编程实战-Java内存模型
Java内存模型解决了并发编程中的可见性和有序性问题可见性产生原因是CPU缓存,有序性产生原因是编译优化解决可见性和有序性问题的最直接方法是禁用缓存和编译优化,但这样性能堪忧,合理的是按需禁用缓存以及编译优化Java 内存模型规范了 JVM 如何提供按需禁用缓存和编译优化的方法,包括包括 volatile、synchronized 和 final 三个关键字,以及六项 Happens-Before 规则Java 内存模型在 1.5 版本对 volatile 语义进行了增强,添加了H.原创 2020-08-14 14:40:06 · 128 阅读 · 0 评论 -
Java并发编程实战-高屋建瓴
原创 2020-08-13 15:53:53 · 96 阅读 · 0 评论 -
Java并发编程实战-如何学好并发编程
跳出来,看全景三个核心问题:分工、同步和互斥分工指分配任务同步指的就是线程间的协作,即一个线程执行完了一个任务,如何通知执行后续任务的线程开工。在 Java 并发编程领域,解决协作问题的核心技术是管程。管程是一种解决并发问题的通用模型,除了能解决线程协作问题,还能解决下面我们将要介绍的互斥问题分工、同步主要强调的是性能。互斥强调的是正确性。专业术语叫“线程安全”。并发程序里,当多个线程同时访问同一个共享变量的时候,结果是不确定的。不确定,则意味着可能正确,也可能错误,事先是不知道的。而导致不确定的原创 2020-08-13 10:43:24 · 605 阅读 · 1 评论