并发编程
文章平均质量分 89
并发编程的学习记录与分享!
Strive_MY
一枚小小的后端码农
展开
-
Java中的死锁与活锁
活锁与死锁活锁活锁同样会发生在多个相互协作的线程间,当他们为了彼此间的响应而相互礼让,使得没有一个线程能够继续前进,那么就发生了活锁。同死锁一样,发生活锁的线程无法继续执行。相当于两个在半路相遇的人:出于礼貌他们相互礼让,避开对方的路,但是在另一条路上又相遇了。就这样,不停地一直避让下去。。。。死锁两个或更多线程阻塞着等待其它处于死锁状态的线程所持有的锁。死锁通常发生在多个线程同时但以不同的顺序请求同一组锁的时候,死锁会让你的程序挂起无法完成任务。死锁的四个必要条件在 Java 中使用多线程,原创 2022-01-03 20:36:55 · 1343 阅读 · 0 评论 -
ThreadLocal详解
ThreadLocal是什么?ThreadLocal 很容易让人顾名思义,想当然地认为是一个“本地线程”。其实,ThreadLocal 并不是一个 Thread,而是 Thread 的局部变量,所以有人觉得它命名为 ThreadLocalVariable 更容易让人理解一些。ThreadLocal 很多地方叫做线程本地变量,也有些地方叫做线程本地存储。它是用来提供线程级别变量,变量只对当前线程可见,该变量对其他线程而言是隔离的。相比与“使用锁控制共享变量访问顺序”的解决方案。ThreadLocal原创 2022-01-02 22:34:02 · 741 阅读 · 0 评论 -
并发编程:锁
什么是锁?置于可启闭的器物上,以钥匙或暗码开启。 ——————百度百科对于线程来说:锁是用于通过多个线程控制对共享资源的访问的工具。通常,锁提供对共享资源的独占访问:一次只能有一个线程可以获取锁,并且对共享资源的所有访问都要求首先获取锁。 但是,一些锁可能允许并发访问共享资源,如 ReadWriteLock 的读写锁。悲观锁和乐观锁悲观锁对于并发间操作产生的线程安全问题持悲观状态,悲观锁认为竞争总是会发生,因此每次对某资源进行操作时,都会持有一个独占的锁,就像 synchronized,不管原创 2022-01-01 16:24:14 · 555 阅读 · 0 评论 -
并发编程:CAS
什么是CAS?CAS,全称为 Compare and Swap,即比较-替换。这是一个由 CPU 硬件提供并实现的原子操作。CAS 是一种有名的无锁(lock-free)算法。也是一种现代 CPU 广泛支持的 CPU 指令级的操作,只有一步原子操作,所以非常快。而且 CAS 避免了请求操作系统来裁定锁的问题,不用麻烦操作系统,直接在 CPU 内部就搞定了。CAS 的引入是为了解决 java 锁机制带来的性能问题。Jdk5 增加了并发包 java.util.concurrent.*,其下面的类使用原创 2021-12-31 16:03:25 · 551 阅读 · 0 评论 -
Java线程详解
写在最前线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。Java 给多线程编程提供了内置的支持。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。如果对线程、进程想了解更多的,请阅读 并发编程应知概念详解;如果对创建线程想了解更多的,请阅读 Jav原创 2021-12-30 20:43:25 · 3380 阅读 · 0 评论 -
Java创建线程的几种方式
继承Thread类定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。创建Thread子类的实例,即创建了线程对象。调用线程对象的start()方法来启动该线程。/** @author Strive */public class CreatThreadDemo1 extends Thread { /** 构造方法: 继承父类方法的Thread(String name) */ public CreatThread原创 2021-12-29 15:33:57 · 312 阅读 · 0 评论 -
并发编程应知概念详解
程序、进程、线程的基本概念operating system: 操作系统是包含多个进程的容器,而每个进程又是包含多个线程的容器。process: 进程就是程序(这里可以理解为我们写的代码)的真正运行实例,是资源分配的基本单位。thread:线程是CPU的基本调度单位,每个线程的执行都是进程代码的某个片段。程序是含有指令和数据的文件,被存储在磁盘或其他的数据存储设备中,也就是说程序是静态的代码。进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程原创 2021-12-28 20:11:47 · 572 阅读 · 0 评论