随笔分类 - java多线程并发编程
java后端技术的重要组成部分
摘要:前言 多线程的编程中,要想熟练的运用线程来完成某些任务,那么就需要了解线程的运行状态以及在必要的时候合理的对线程进行中断,这样才能够达到提高程序的执行效率。 线程的状态 线程的状态可以从Thread类的源码中看出,它包括六种状态:新建状态(NEW)、可运行状态(RUNNABLE)、阻塞状态(BLOC
阅读全文
摘要:前言 在Java并发编程中,有一个关键字是volatile,它的英文意思是“易变的,不稳定的,无定型的”。那么在Java编程中,被volatile修饰的变量,它能够保证当前变量的可见性,从而使所有访问该前变量的线程都能够及时的获取到当前变量的最新值,从而保证它的可见性。那么它是怎么做到的呢? vol
阅读全文
摘要:前言 Java中的锁都是基于对象的锁,Java中的每一个对象都可以作为一个锁,我们常听到类锁其实也是对象锁,因为Java类只有一个class对象(一个Java类可以有多个实例对象,多个实例对象共享这一个Java类)。之所以有锁的概念,都是因为在多个线程在访问一个共享变量资源时会发生一些不可控制的问题
阅读全文
摘要:#线程封闭 数据被封闭在各自的线程之中被线程私有,不需要进行同步,这种通过数据封闭在线程中而避免使用同步的技术成为线程封闭。 它具体的体现有:ThreadLocal、局部变量(也叫做栈封闭,它是线程所固有的特点,局部变量位于该线程执行的虚拟机栈中) 示例代码: /** * * ThreadLocal
阅读全文
摘要:线程间的通信可以分为文件共享、网络共享、共享变量、JDK提供的线程协调API(suspend/resume、wait/notify、park/unpark),今天我们着重来讲一下JDK提供的线程协作的API。 suspend/resume suspend/resume方式的线程间协作时容易产生死锁,
阅读全文
摘要:前言 jdk中提供了一种能够控制多个线程任务都执行完之后,再执行其他线程任务的一个线程通信工具类,它就是CountDownLatch。下面我们就来看一下它的简单使用以及原理。 CountDownLatch介绍 CountDownLatch,是“闭锁”的一种实现,也被称为“屏障”。它刚开始的状态的是关
阅读全文
摘要:前言 java多线程之间进行通信时,JDK主要提供了以下几种通信工具类。主要有Semaphore、CountDownLatch、CyclicBarrier、exchanger、Phaser这几个通讯类。下面我们来详细介绍每个工具类的作用、原理及用法。 Semaphore介绍 Semaphore翻译过
阅读全文

浙公网安备 33010602011771号