并发编程
文章平均质量分 86
心心念念的小鼠标
为梦想而疯狂!
展开
-
多线程同步方法<一>数据库悲观锁(for update)
悲观锁,正如其名,具有强烈的独占和排他特性。上来就锁住,把事情考虑的比较悲观,它是采用数据库机制实现的,数据库被锁之后其它用户将无法查看,直到提交或者回滚,锁释放之后才可查看。所以悲观锁具有其霸道性。 简单说其悲观锁的功能就是,锁住读取的记录,防止其它事物读取和更新这些记录,而其他事物则会一直堵塞,知道这个事物结束。我们可以在dos窗口中来简单测试测试: 1)语句:sq原创 2015-10-25 11:52:32 · 2614 阅读 · 9 评论 -
线程池-自定义线程池<一>
最近在研究Executors线程池,出了常用的4个基本创建线程池的方法,newFixedThreadPool(),newSingleThreadExextor(),newCachedThreadPool(),newScheduledThreadPool()之外,我们完全可以通过自定义的方式实现自己想要的线程池,进而满足我们项目需求。 对于自定义线程池也是基于ThreadPoolExecutor的构原创 2017-06-26 10:55:27 · 523 阅读 · 1 评论 -
线程池-自定义线程池<二>
对于上篇文章而言,我们了解了有界序列的使用方式。对于剩余的mt6,拒绝,单纯的抛出异常也并非是一个好的办法。对于拒绝这点,其实JDK提供了好几种拒绝策略:AbortPolicy:直接抛出异常组织系统正常工作;CallerRunsPolicy:只要线程池未关闭,该策略直接在调用者线程中,运行当前被丢弃的任务;DiscardOldestPolicy:丢弃最老的一个请求,尝试再次提交当前任务;Di原创 2017-06-27 12:08:38 · 364 阅读 · 1 评论 -
并发编程--线程池源码解析
项目中经常会用到线程池来解决一些异步任务,本篇则主要从源码角度来分析一下其执行的过程。使用过程如下:private static final ThreadPoolExecutor executor = new ThreadPoolExecutor( threadSize+1, threadSize+1, 10, TimeUnit.SECONDS ,new SynchronousQueu原创 2022-02-26 22:53:09 · 635 阅读 · 0 评论 -
并发编程--什么是线程?
线程是调度CPU资源的最小单位,线程模型分为KLT模型与ULT模型,JVM使用的KLT模型,Java线程与OS线程保持1:1的映射关系,也就是说有一个java线程也会在操作系统里有一个对应的线程。原创 2022-02-23 13:55:10 · 284 阅读 · 0 评论 -
并发编程--CountdownLatch结合线程池实现
在分布式项目中,通过分布式架构实现相关功能调用,这是必然存在的。我在项目中,比如商品详情信息页面的展示,分享图的合成等场景,都会涉及到好几个分模块功能获取信息。CountdownLatch则可以很好的实现类似场景的功能实现。原创 2022-02-11 14:49:30 · 1483 阅读 · 0 评论 -
并发编程--线程同步之 synchronized关键字(二)
上篇文章对synchronized有了一个简单的理解并发编程–线程同步之 synchronized关键字(一)本篇主要重点了解一下编译后的过程是如何的?synchronized是基于JVM内置锁实现,通过内部对象Monitor(监视器锁)实现。synchronized关键字被编译成字节码后会被翻译成monitorenter和monitorexit两条指令分别在同步块逻辑代码的起始位置与结束位置。每个同步对象都有一个自己的Monitor(监视器锁),加锁过程如下图所示:Monitor监视器锁任原创 2021-11-07 21:57:19 · 137 阅读 · 0 评论 -
并发编程--CountdownLatch && CyclicBarrier
Semaphore,CountdownLatch,CyclicBarrier都是java提供的同步辅助类。上一篇对Semaphore有了一定的了解,本篇则针对CountdownLatch以及CyclicBarrier进行一定的总结。一、CountdownLatch1)CountdownLatch是什么?CyclicBarrier的字面意思是可循环使用(Cyclic)的屏障(Barrier)能够使一个线程等待其他线程完成各自的工作之后再执行。例如zookeeper分布式锁的实现。而Semaphore原创 2021-10-09 09:45:16 · 136 阅读 · 0 评论 -
并发编程--Semaphore
一、Semaphore是什么?semaphore一般指信号灯,在Java层面称之为信号量。顾名思义,在使用场景方面就很容易理解,比如用于流量控制,车库停车等一系列,就是资源有限,排队等待。semaphore用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。是一个线程同步的辅助类。二、常见方法创建具有给定数量的许可和非公平公平设置的SemaphoreSemaphore(int permits)使用给定的许可数量和给定的公平设置创建一个SemaphoreSemapho原创 2021-10-03 19:37:18 · 231 阅读 · 0 评论 -
并发编程--线程同步之 synchronized关键字(一)
线程同步主要就是两种实现:ReentrantLock 显示锁Synchronized 隐式锁一、对synchronized的一个整体认知1、JDK1.6之前整体了解那肯定就得从synchronized升级前后开始了解,正所谓士别三日当刮目相待,JDK1.6之前,synchronized确实很笨重,因为他是强依赖于操作系统的,不管你多少个线程,他都默认你竞争激烈,直接上重头戏,哈哈。2、JDK1.6后,包含1.6但是JDK1.6则对synchronized做了重大优化,引入了锁粗化,锁消除,原创 2021-09-26 14:07:13 · 107 阅读 · 0 评论