并发
文章平均质量分 85
ZyyIsPig
这个作者很懒,什么都没留下…
展开
-
java内置锁synchronized是怎么实现的
在这个示例中,increment方法被synchronized修饰,多线程并发进行调用时,每个线程在进入该方法时会获取该对象的监视器,如果该监视器没有被其他线程占用,则该线程会执行该方法,并持有该监视器;当一个线程要进入一个被synchronized修饰的方法或代码块时,首先会尝试获取对象的监视器,如果该监视器没有被其他线程占用,则该线程会获取到该监视器,并在对象的监视器上创建一个与该线程相应的锁计数器;如果该监视器已经被其他线程占用,则该线程会进入对象的等待队列,等待监视器的释放,并在该队列中等待唤醒。原创 2023-03-12 22:27:39 · 101 阅读 · 0 评论 -
线程池
线程池四种线程池CachedThreadPoolFixedThreadPoolScheduledThreadPoolSingleThreadExecutor自定义线程池ThreadPoolExecutor拒绝策略AbortPolicyCallerRunsPolicyDiscardOldestPolicyDiscardPolicy自定义拒绝策略ThreadFactory线程池内的异常处理shutdown shutdownNow线程池状态允许核心线程销毁策略核心线程预启动策略线程池以及线程池切面移除线程池中的任原创 2021-03-03 20:37:28 · 133 阅读 · 1 评论 -
并发工具类(二)
并发工具类AQS源码类图ReentranLock原理AQS.ConditionObject锁的分类乐观锁/悲观锁公平锁/非公平锁独占锁和共享锁可重入锁自旋锁高并发随机数ThreadLocalRandom与Random分析例子高性能累加器例子累加器家族例子AQSjava.util.concurrent.locks.AbstractQueuedSynchronizerjava.util.concurrent.locks包基于AQS实现1、抽象队列同步器简称AQS,它同步器的基础组件,JUC种锁的底层实现原创 2021-02-28 21:53:06 · 388 阅读 · 0 评论 -
并发工具类(一)
并发工具类CountDownLatchCyclicBarrier例1例2Pasher源码分析例1例2注册与注销Semaphore例1Exchanger例子ReentrantLock例1例2例3公平/非公平ReentrantReadWriteLockStampedLock写锁writeLock例1悲观读锁例1LockSupport例1例2CountDownLatchCountDownLatch 是一个辅助工具类,它允许一个或多个线程等待一系列指定操作的 完成。CountDownLatch 以一个给定的数量原创 2021-02-27 17:26:20 · 589 阅读 · 0 评论 -
并发队列
并发队列ConcurrentLinkedQueueArrayBlockingQueue使用LinkedBlockingQueueSynchronousQueuePriorityBlockingQueue查看源码DelayQueue例子ConcurrentLinkedQueueConcurrentLinkedQueue并发无阻塞队列,BlockingQueue并发阻塞队列,均实现自Queue接口 ConcurrentLinkedQueue无阻塞、无锁、高性能、无界、线程安全,性能优于BlockingQ原创 2021-02-26 16:24:47 · 442 阅读 · 0 评论 -
同步类容器
同步类容器同步类容器例子VectorHashTable并发容器ConcurrentHashMap例子COW类容器COW容器的弱一致性CopyOnWriteArrayList例子同步类容器Vector、HashTable等古老的并发容器,都是使用Collections.synchronizedXXX等工厂方法创建的, 并发状态下只能有一个线程访问容器对象,性能很低(进行put或者get操作的时候之后一个线程能获取到锁)例子public class DemoThread26 { public st原创 2021-02-25 23:04:27 · 334 阅读 · 0 评论 -
变量与线程安全
变量与线程安全volatile关键字volatile关键字和static的区别Atomic类CAS原理ThreadLocal原理ThreadLocal源码解析例子InheritableThreadLocal源码Unsafe类Atomic类大量使用了Unsafe类Unsafe类安全限定例子Unsafe类的put和get方法Unsafe操作static和violatestaticviolateUnsafe操作Array类把数组作为整体字段考虑数组内元素操作内存操作线程调度Unsafe的内存屏障和类加载vola原创 2021-02-25 20:50:08 · 555 阅读 · 0 评论 -
线程安全
线程安全线程安全问题JVM内存模型例子syncronized关键字例子同步和异步并发脏读问题synchronized锁重入抛出异常释放锁synchronized代码块例子不要在线程内修改对象锁的引用并发与死锁线程之间的通讯notify与notifyAll的区别阻塞式线程安全队列实现wait方法解析例子守护线程和用户线程上下文切换线程安全问题线程工作的时候将数据从主存区复制到工作内存区域,处理结束后将数据写回,多个线程访问统一资源是可能产生线程安全问题JVM内存模型可见性:一个线程操作主存区的数据对原创 2021-02-24 22:55:23 · 547 阅读 · 0 评论 -
线程复习
线程复习进程与线程内存与线程JDK查看进程的信息创建线程继承Thread类RunnableCallableJOIN方法三种join方法使用sleep方法例子yield方法例子线程中断interrupted有关的函数例子例子例子进程与线程要点:进程是系统进行资源分配和调度的基本单位,一个进程至少有一个线程,进程中的多个线程共享进程的资源线程是进程中的一个实体,线程是不会独立存在的线程CPU分配的基本单位(CPU直接分配给线程)举例:main函数启动->JVM进程->原创 2021-02-24 00:05:39 · 210 阅读 · 0 评论