自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 【多线程】Lock中的Condition实现等待通知

package com.yf.condition; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class ExpressCond { public final static String CITY = "ShangHai"; private int .

2020-06-23 18:23:02 67

转载 [多线程]AQS(AbstractQuenedSynchronizer)

AQS原理 AQS:AbstractQuenedSynchronizer抽象的队列式同步器。是除了java自带的synchronized关键字之外的锁机制。 AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包 AQS的核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并将共享资源设置为锁定状态,如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制AQS是用

2020-06-23 16:18:19 89

原创 【多线程】CAS(Compare And Swap)

解释 CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量的时候,只有当变量的预期值A和内存地址V当中的实际值相同时,才会将内存地址V对应的值修改为B。 从思想上来说,Synchronized属于悲观锁,悲观地认为程序中的并发情况严重,所以严防死守。CAS属于乐观锁,乐观地认为程序中的并发情况不那么严重,所以让线程不断去尝试更新。 ...

2020-06-23 15:11:10 83

原创 【多线程】fork-join并行计算框架

什么是fork-join计算框架 可以将一个大的任务拆分成多个子任务进行并行处理,最后将子任务结果合并成最后的计算结果,并进行输出。 什么是分而治之? 规模为N的问题,N<阈值,直接解决,N>阈值,将N分解为K个小规模子问题,子问题互相对立,与原问题形式相同,将子问题的解合并得到原问题的解 工作窃取 一个大任务分割为若干个互不依赖的子任务,为了减少线程间的竞争,把这些子任务分别放到不同的队列里,并未每个队列创建一个单独的线程来执行队列里的任...

2020-06-23 09:59:54 267

原创 【多线程】等待通知机制

什么是等待通知机制 等待通知机制在生活中也比比皆是,比如取快递,快递员到来的时间不确定,我们处于wait状态,只有快递员打电话通知我们到门口或者敲门notify,我们才能确定快递到了。 代码示例 package com.yf.waitnotify; public class MyThread1 extends Thread { private Object lock; public MyThread1(Object lock) { super(); ...

2020-06-22 16:46:24 81

原创 【多线程】死锁

描述 死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信造成的一种阻塞现象,若无外力作用,他们将无法推进下去。在多线程技术中,死锁是应当避免的,因为这会造成系统的假死。 死锁示例代码 package com.yf.Synchronized; public class DealThread implements Runnable { public String username; public Object lock1 = new O...

2020-06-22 15:23:42 71

原创 【多线程】yield方法

yield方法作用: 放弃当前的cpu资源,将它让给其他的任务去占用cpu执行时间,但放弃的时间不确定,有可能刚刚放弃,就又马上获得cpu时间片。 示例代码: package com.yf.yield; public class MyThread extends Thread { @Override public void run() { long beginTime = System.currentTimeMillis(); int ...

2020-06-22 14:40:46 132

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除