随笔分类 -  并发(多线程)

摘要:1.Semaphore (信号量) Semaphore 是一种基于计数的信号量,用来控制同时访问的线程数。 它可以设定一个阈值,基于此,多个线程竞争获取许可信号,做完自己的申请后归还,超过阈值后,线程申请许可信号将会被阻塞。Semaphore 可以用来构建一些对象池,资源池之类的,比如数据库连接池 阅读全文
posted @ 2022-07-09 16:27 堤苏白 阅读(50) 评论(0) 推荐(0) 编辑
摘要:AQS代码 //核心属性 static final class Node { static final Node SHARED = new Node(); static final Node EXCLUSIVE = null; static final int CANCELLED = 1; stat 阅读全文
posted @ 2022-07-08 16:53 堤苏白 阅读(915) 评论(0) 推荐(0) 编辑
摘要:ReentantLock 进行加锁(每个线程都访问的是同一个ReentantLock 对象): 第一个获取锁的线程就做了两件事情: 1、设置AbstractQueuedSynchronizer的state为1 2、设置AbstractOwnableSynchronizer的thread为当前线程 这 阅读全文
posted @ 2022-07-08 16:53 堤苏白 阅读(332) 评论(0) 推荐(0) 编辑
摘要:对象内存结构(oop) 对象内存结构16B:对象头,对象实例数据,对齐填充位。对象头中有锁标识, 64位OS:new Object()时对象为16B,对象头占12B,对象无实例数据,对齐填充4B。 对象头:markWord(8B),类指针(被压缩占4B),(数组长度)。 markword内部结构 T 阅读全文
posted @ 2022-07-07 16:42 堤苏白 阅读(189) 评论(0) 推荐(0) 编辑
摘要:线程池:是一种利用池化技术思想来实现的线程管理技术,主要是为了复用线程、便利地管理线程和任务、并将线程的创建和任务的执行解耦开来。 线程池哪有写优点呢? 降低资源消耗:通过池化技术重复利用已创建的线程,降低线程创建和销毁造成的损耗。 提高响应速度:任务到达时,无需等待线程创建即可立即执行。 提高线程 阅读全文
posted @ 2022-07-06 16:30 堤苏白 阅读(102) 评论(0) 推荐(0) 编辑
摘要:并发编程又称为多线程编程,包括同步:线程之间协作;互斥:独占锁 ; 分工:大任务拆解。 并发特性:原子性、可见性、有序性 java线程为内核级线程,jvm不具备直接调度CPU的权限,因为Thread类的start等方法内调用的都是native方法,native方法底层是c++实现的。 Java Th 阅读全文
posted @ 2022-07-04 19:32 堤苏白 阅读(163) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示