• 【JAVA并发编程实战】5、构建高效且可伸缩的结果缓存

    时间:2023-02-26 18:26:42

    首先创建一个借口,用来表示耗费资源的计算package cn.xf.cp.ch05;public interface Computable<A, V>{ V compute(A arg) throws Exception;}实现接口,实现计算过程package cn.xf.cp.c...

  • Java并发编程实战 03互斥锁 解决原子性问题

    时间:2023-02-14 21:37:43

    文章系列Java并发编程实战 01并发编程的Bug源头Java并发编程实战 02Java如何解决可见性和有序性问题摘要在上一篇文章02Java如何解决可见性和有序性问题当中,我们解决了可见性和有序性的问题,那么还有一个原子性问题咱们还没解决。在第一篇文章01并发编程的Bug源头当中,讲到了把一个或者...

  • java并发编程实战:第八章----线程池的使用

    时间:2023-02-12 06:22:13

    一、在任务和执行策略之间隐性耦合Executor框架将任务的提交和它的执行策略解耦开来。虽然Executor框架为制定和修改执行策略提供了相当大的灵活性,但并非所有的任务都能适用所有的执行策略。依赖性任务:依赖其他同步任务的结果,使其不得不顺序执行,影响活跃性使用线程封闭的任务:在单线程的Execu...

  • 《java并发编程实战》读书笔记2--对象的共享,可见性,安全发布,线程封闭,不变性

    时间:2023-02-04 09:26:27

    这章的主要内容是:如何共享和发布对象,从而使它们能够安全地由多个线程同时访问。内存的可见性确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。上面的程序中NoVisibility可能会持续循环下去,因为读线程可能永远都看不到ready的值。一种更奇怪的现象是NoVisibility可能会...

  • java并发编程实战-Java内存模型

    时间:2023-01-08 17:57:21

    1,JMM(Java类型模型)规定了JVM必须遵循的一组最小保证,这组保证规定了对变量的写入操作在何时将对于其他线程可见。   1.1,平台的内存模型:在共享内存的多处理器体系架构中,每个处理器都拥有自己的缓存,并且定期地与主内存进行协调。要想确保每个处理器都能在任意时刻知道其他处理器正在进行的工作...

  • Scala深入浅出进阶经典第67讲:Scala并发编程匿名Actor、消息传递、偏函数实战解析及其在Spark源码中的应用解析

    时间:2022-12-18 17:59:56

    package com.dt.scalaInAction.demo_067import scala.actors.Actor._import scala.actors.Actor/** * Scala并发编程匿名Actor、消息传递、偏函数实战解析及其在Spark源码中的应用解析 */object ...

  • java并发编程实战-CyclicBarrier和FutureTask使用

    时间:2022-12-18 17:59:56

    import java.util.concurrent.Callable;import java.util.concurrent.CyclicBarrier;import java.util.concurrent.FutureTask;public class FutureTest {public ...

  • [笔记][Java7并发编程实战手册]4.9-4.10在执行器中控制任务的完成和取消任务FutureTask

    时间:2022-12-18 17:59:44

    [笔记][Java7并发编程实战手册]系列目录 简介在前面都是把需要执行的Runnable或则Callable提交给线程池,让线程池来管理任务的生命周期。在本章会学习:怎么取消任务的运行,在任务运行中,任务结束的时候怎么去处理一些事情,比如关闭资源,发送通知等。本章心得 继承可取消任务的Futu...

  • Java7并发编程实战(一) 线程的中断

    时间:2022-12-11 19:41:12

    控制线程中断的方法一般常规是定义一个布尔值,然后while(布尔值) 去执行,当想停止该线程时候,把布尔值设为false.这里我们来看第二种,Interrupt该例子模拟一个线程从1打印到10,然后到5的时候中断线程,主要在线程中捕捉InterruptedException 异常public cla...

  • 《c++并发编程实战》之第3章 线程共享

    时间:2022-12-05 07:30:44

    《c++并发教程实战》之第3章 线程共享 3.1 共享问题3.1.1 条件竞争3.1.2 防止恶性条件竞争3.2 互斥保护共享数据3.2.1 使用互斥3.1.cpp3.2.2 组织和编排代码保护共享数据3.2.cpp3.2.3 接口固有的条件竞争3.3.cpp3.4.cpp3.5.cpp3.2.4...

  • 2018年java并发编程原理与实战 java多线程与高并发实战

    时间:2022-12-04 18:03:31

    java并发编程是一个优秀的开发者成长过程中绕不过去的挑战。数据库服务,Web服务,大数据处理框架,分布式服务等等,并发编程往往扮演着极其重要的角色。天下武功,唯快不破。要想提高性能,并发必不可少。 市面上大多数讲解并发的视频教程大多基于线程的基础,深入讲解的非常少;对于市面上很多的并发书籍,...

  • 多线程-java并发编程实战笔记

    时间:2022-12-04 18:03:25

    线程安全性 编写线程安全的代码实质上就是管理对状态的访问,而且通常都是共享的,可变的状态。 一个对象的状态就是他的数据,存储在状态变量中,比如实例域或静态域。所谓共享是指一个对象可以被多个线程访问;所谓可变是指变量 的值在其生命周期之内可以改变。 无论何时只要多于一个线程访问给定的状态变量,而且...

  • 《java并发编程实战》读书笔记9--并发程序的测试

    时间:2022-11-19 11:52:16

    第12章 并发程序的测试大致分为两类:安全性测试和活跃性测试12.1 正确性测试找出需要检查的不变性条件和后验条件。接下来将构建一组测试用例来测试一个有界缓存。程序清单12-1给出了BoundedBuffer的实现,其中使用Semaphore来实现缓存的有界属性和阻塞行为。BoundedBuffer...

  • Java并发编程原理与实战二十四:简易数据库连接池

    时间:2022-11-11 15:53:14

    public class MyDataSource { private static LinkedList<Connection> pool = new LinkedList<>(); private static final int INIT_CONNECTIO...

  • 【Java并发编程实战】

    时间:2022-11-10 18:01:54

    在上篇博客(【Java并发编程实战】-----“J.U.C”:Semaphore)中,LZ介绍了Semaphore,下面LZ介绍CyclicBarrier。在JDK API中是这么介绍的: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。...

  • 【Java并发编程实战】-----“J.U.C”:CLH队列锁

    时间:2022-11-08 19:49:16

    在前面介绍的几篇博客中总是提到CLH队列,在AQS中CLH队列是维护一组线程的严格按照FIFO的队列。他能够确保无饥饿,严格的先来先服务的公平性。下图是CLH队列节点的示意图:在CLH队列的节点QNode中包含有一个locked的字段,该字段表示该节点是否需要获取锁,为true表示需要获取,为fal...

  • 【Java并发编程实战】-----“J.U.C”:CyclicBarrier

    时间:2022-11-08 19:45:02

    在上篇博客(【Java并发编程实战】-----“J.U.C”:Semaphore)中,LZ介绍了Semaphore,下面LZ介绍CyclicBarrier。在JDK API中是这么介绍的:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在...

  • 【Java并发编程实战】----- AQS(三):阻塞、唤醒:LockSupport

    时间:2022-11-08 19:21:47

    在上篇博客(【Java并发编程实战】----- AQS(二):获取锁、释放锁)中提到,当一个线程加入到CLH队列中时,如果不是头节点是需要判断该节点是否需要挂起;在释放锁后,需要唤醒该线程的继任节点lock方法,在调用acquireQueued():if (shouldParkAfterFailed...

  • 【Java并发编程实战】-----“J.U.C”:Semaphore

    时间:2022-11-08 19:02:59

    信号量Semaphore是一个控制访问多个共享资源的计数器,它本质上是一个“共享锁”。Java并发提供了两种加锁模式:共享锁和独占锁。前面LZ介绍的ReentrantLock就是独占锁。对于独占锁而言,它每次只能有一个线程持有,而共享锁则不同,它允许多个线程并行持有锁,并发访问共享资源。独占锁它所采...

  • 【Java并发编程实战】-----“J.U.C”:ReentrantReadWriteLock

    时间:2022-11-08 18:57:44

    ReentrantLock实现了标准的互斥操作,也就是说在某一时刻只有有一个线程持有锁。ReentrantLock采用这种独占的保守锁直接,在一定程度上减低了吞吐量。在这种情况下任何的“读/读”、“读/写”、“写/写”操作都不能同时发生。然而在实际的场景中我们就会遇到这种情况:有些资源并发的访问中,...