
并发编程
文章平均质量分 96
零到无限大
前进吧!如果你还没有放弃的话。
展开
-
并发编程的艺术--Java中的锁(下)【随笔】
读写锁介绍之前提到锁(如 CustomLock 和 ReentrantLock )基本都是独占锁,这些锁在同一时刻只允许一个线程进行访问,而读写锁在同一时刻可以允许多个读线程访问。但是在写线程访问时,所有的读线程和其他写线程均被阻塞。读写锁维护了一对锁,一个读锁和一个写锁,通过分离读锁和写锁,使得并发性相比一般的独占锁有了很大提升。除了保证写操作对读操作的可见性以及并发性的提升之外,读写锁能够简化读写交互场景的编程方式。假设在程序中定义一个共享的用作缓存数据结构,它大部分时间提供读服务(例如查询和搜原创 2021-01-11 11:55:59 · 189 阅读 · 2 评论 -
并发编程的艺术--Java中的锁(上)【随笔】
Lock 锁介绍锁是用来控制多个线程访问共享资源的方式,锁能够防止多个线程同时访问共享资源。在 Lock 接口出现之前,java 程序主要是靠 synchronized关键字实现同步功能。Java 1.5 后,推出了 Lock 接口,它拥有与 synchronized 相同的并发性和内存语义,在实现线程安全的控制中。与 synchronized 不同的是 Lock 需要显式的加锁与释放锁,但它比 synchronized 更加灵活,且效率更高。虽然它缺少了(通过synchronized块或者方法所原创 2021-01-09 11:21:32 · 693 阅读 · 0 评论 -
并发编程入门---JUC - 下【随笔】
JUC - 下ForkJoin 详解ForkJoin 介绍在大数据量的情况下,可以使用 ForkJoin 把任务拆分为小任务,并行执行任务,提高效率;ForkJoin 特点:工作窃取。【ForkJoin 里面维护的都是双端队列】如上图:ForkJoin 拆分出来了两个任务 A 和 B,分别启动一个线程执行;在执行过程中 B 线程已经执行完成全部任务,此时 A 线程才执行到一半,这时 B 线程就会从 A 线程的任务队列中取出未执行的任务执行【队列为双端队列:即可以同时从两边取出元素】,原创 2021-01-04 17:13:53 · 216 阅读 · 0 评论 -
并发编程入门---JUC - 上【随笔】
JUC - 上基本概念什么是 JUC线程与进程Java 无法开启线程,start() 方法调用本地方法 start0() 开启线程,底层是 C++,java 无法直接操作硬件。public synchronized void start() { /** * This method is not invoked for the main method thread or "system" * group threads created/set原创 2021-01-04 16:53:52 · 1280 阅读 · 0 评论 -
并发编程入门---多线程【随笔】
多线程基本概念Process 与 Thread说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位,通常在一个进程中可以包含若干个线程,当然一个进程中至少有一个线程,不然没有存在的意义。线程是CPU调度执行的单位。进程与线程的区别总结:根本区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位资源开销:每个进程都有独立的代码和数据空间(程原创 2020-12-22 20:23:18 · 432 阅读 · 0 评论