上一页 1 2 3 4 5 6 7 ··· 13 下一页
摘要: Future : 提前完成任务 原理:wait(),notify()的使用。 线程之间的通信 : CountDownLatch :线程计数 CyclicBarrier :循环计数 Semaphore : 信号量,比如有100个线程,但是只有10个信号量,那么就每个批次执行10个,“批次”。 Exch 阅读全文
posted @ 2019-08-18 17:05 陈标 阅读(208) 评论(0) 推荐(0)
摘要: condition 的作用:条件锁 需求: 按需执行三个线程。 用wait,notify的方式: 缺点: notifyAll,会唤醒所有等待的线程,不能指定特定线程的唤醒。此时就引入了condition 用condition的方式来实现: 阅读全文
posted @ 2019-08-18 00:09 陈标 阅读(595) 评论(0) 推荐(0)
摘要: 重点: 1、读锁共享 2、写锁互斥 3、读写锁互斥 锁降级:将写锁降级为读锁。(先获取写锁,再获取读锁,再释放写锁,最后释放读锁) 造成锁降级的原因:出于性能考虑,一般情况下,都将锁定的动作,精确到具体的语句块,在两个锁的语句块之间,有可能线程的交替执行,造成线程安全问题。 解决的方法: 1、将锁的 阅读全文
posted @ 2019-08-17 00:06 陈标 阅读(221) 评论(0) 推荐(0)
摘要: 何为公平锁: 线程的运行,根据线程的提交(start() 方法的调用时间点),依次执行。 公平锁实现的原理: 1、使用链表来维护数据。(方便获取头节点) 2、当一个线程过来,就创建一个节点,节点中存放的内容为,wait()的对象。 3、当上一个线程结束,则获取头节点,获取节点中存放的对象,调用对象的 阅读全文
posted @ 2019-08-16 07:53 陈标 阅读(234) 评论(0) 推荐(0)
摘要: AbstractQueuedSynchronizer 是一个锁框架。实现的原理(大概): 1、关于重入锁方面的实现,参考(手写一个可重入锁)。 2、关于公平锁方面的实现,使用双链表的形式,进行公平锁的排队。怎么用: 详见AbstractQueuedSynchronizer的api,或者参考:Reen 阅读全文
posted @ 2019-08-16 06:34 陈标 阅读(93) 评论(0) 推荐(0)
摘要: 基于的原理: 1、synchronized 2、wait,notify方法的搭配使用 代码示例如下: 阅读全文
posted @ 2019-08-16 05:19 陈标 阅读(357) 评论(0) 推荐(0)
摘要: 从语义方面解析为什么需要锁: 1、wait()方法会释放锁,如果没有先获得锁,那么如何释放? 从实际的作用: 为了预防饥饿线程的产生。 原因: 现在考虑, 如果wait() 和 notify() 的操作没有相应的同步机制, 则会发生如下情况 【线程A】 进入了 while 循环后(通过了 !cond 阅读全文
posted @ 2019-08-16 04:19 陈标 阅读(2446) 评论(0) 推荐(0)
摘要: 问题: 1、线程的中断方式。 2、为什么中断阻塞中的线程,会抛出异常。 代码示例: 解答问题: 1、线程的中断,使用设置中断标示的方式进行。 2、中断阻塞中的线程抛出异常,是为了不让线程无休止的中断。因为设置中断标示,线程并不会马上停止,还需要等待下一次的CPU时间片到来,才能根据interrupt 阅读全文
posted @ 2019-08-16 04:18 陈标 阅读(2927) 评论(0) 推荐(0)
摘要: 并发 活跃性问题: 1、死锁:线程A,B各种拥有一个加锁的资源,同时争抢对方的资源。 2、饥饿:某些线程得不到运行。(线程优先级) 3、活锁:线程A,B相让,都不去执行。 饥饿产生的情况: 1、线程优先级。(需要考虑系统的差异性) 2、线程A,B执行同一个同步块;线程A阻塞,线程B在等待A释放锁。 阅读全文
posted @ 2019-08-16 04:17 陈标 阅读(141) 评论(0) 推荐(0)
摘要: 基于的原理: 1、两阶段提交 2、定时事务状态回查。 阅读全文
posted @ 2019-08-15 05:53 陈标 阅读(125) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 13 下一页