摘要: 何为公平锁: 线程的运行,根据线程的提交(start() 方法的调用时间点),依次执行。 公平锁实现的原理: 1、使用链表来维护数据。(方便获取头节点) 2、当一个线程过来,就创建一个节点,节点中存放的内容为,wait()的对象。 3、当上一个线程结束,则获取头节点,获取节点中存放的对象,调用对象的 阅读全文
posted @ 2019-08-16 07:53 陈标 阅读(238) 评论(0) 推荐(0)
摘要: AbstractQueuedSynchronizer 是一个锁框架。实现的原理(大概): 1、关于重入锁方面的实现,参考(手写一个可重入锁)。 2、关于公平锁方面的实现,使用双链表的形式,进行公平锁的排队。怎么用: 详见AbstractQueuedSynchronizer的api,或者参考:Reen 阅读全文
posted @ 2019-08-16 06:34 陈标 阅读(95) 评论(0) 推荐(0)
摘要: 基于的原理: 1、synchronized 2、wait,notify方法的搭配使用 代码示例如下: 阅读全文
posted @ 2019-08-16 05:19 陈标 阅读(359) 评论(0) 推荐(0)
摘要: 从语义方面解析为什么需要锁: 1、wait()方法会释放锁,如果没有先获得锁,那么如何释放? 从实际的作用: 为了预防饥饿线程的产生。 原因: 现在考虑, 如果wait() 和 notify() 的操作没有相应的同步机制, 则会发生如下情况 【线程A】 进入了 while 循环后(通过了 !cond 阅读全文
posted @ 2019-08-16 04:19 陈标 阅读(2453) 评论(0) 推荐(0)
摘要: 问题: 1、线程的中断方式。 2、为什么中断阻塞中的线程,会抛出异常。 代码示例: 解答问题: 1、线程的中断,使用设置中断标示的方式进行。 2、中断阻塞中的线程抛出异常,是为了不让线程无休止的中断。因为设置中断标示,线程并不会马上停止,还需要等待下一次的CPU时间片到来,才能根据interrupt 阅读全文
posted @ 2019-08-16 04:18 陈标 阅读(2929) 评论(0) 推荐(0)
摘要: 并发 活跃性问题: 1、死锁:线程A,B各种拥有一个加锁的资源,同时争抢对方的资源。 2、饥饿:某些线程得不到运行。(线程优先级) 3、活锁:线程A,B相让,都不去执行。 饥饿产生的情况: 1、线程优先级。(需要考虑系统的差异性) 2、线程A,B执行同一个同步块;线程A阻塞,线程B在等待A释放锁。 阅读全文
posted @ 2019-08-16 04:17 陈标 阅读(142) 评论(0) 推荐(0)