java并发编程
愤怒的小鸟777
路漫漫其修远兮,吾将上下而求索。。。
展开
-
java并发之线程池
简介:池化技术相比大家大家已经屡见不鲜了,线程池、数据库连接池、Http连接池等等都是对这个思想的应用。池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。线程池类的相关结构:ExecutorService接口继承了Executor接口,定义了管理线程任务的方法。ExecutorService的抽象类AbstractExecutorService提供了submit、invokeAll()等部分方法实现,但是核心方法Executor.execute()并没有实现。因为所有任务都在这个方法原创 2020-06-17 16:45:25 · 144 阅读 · 0 评论 -
java并发Executor、ExecutorService、ScheduledExecutorService接口
简介:在以往创建线程时,我们通常使用new Thread()创建一个类对象,通过start()方法运行一个线程,当有多个线程,就要用上面的方法多个创建,看起来非常繁琐,代码看起来也不是非常整洁。而在JUC包下其实已经提供了相关接口(Executor、ExecutorService、ScheduledExecutorService)来作为池化技术的基础,通过Executors工具类创建各种线程池,减少每次获取资源的消耗,提高对资源的利用率。在这里主要介绍上面所说的三个接口的方法使用一、Executor接口:原创 2020-06-11 17:17:06 · 221 阅读 · 0 评论 -
Java并发之AtomicIntegerArray类
简介:java.util.concurrent.atomic.AtomicIntegerArray类提供了支持int数组的原子更新,还包含高级操作,如变量的读取与写入,保证原子的一致性。方法:示例:下面通过AtomicIntegerArraryTest 程序显示了基于线程的环境中AtomicIntegerArray变量的使用。import java.util.concurrent.atomic.AtomicIntegerArray;public class AtomicIntegerArrar原创 2020-06-05 16:08:56 · 243 阅读 · 0 评论 -
Java并发AtomicBoolean类
简介:java.util.concurrent.atomic.AtomicBoolean类提供了可以原子读取和写入的底层布尔值的操作,并且还包含高级原子操作。 AtomicBoolean支持基础布尔变量上的原子操作。 它具有获取和设置方法,如在volatile变量上的读取和写入。 也就是说,一个集合与同一变量上的任何后续get相关联。 原子compareAndSet方法也具有这些内存一致性功能。方法:摘自jdk1.8示例:以下AtomicBooleanTest程序显示了基于线程的环境中AtomicB原创 2020-06-03 15:07:27 · 446 阅读 · 0 评论 -
Java并发之AtomicLong类
简介:java.util.concurrent(JUC)有个atomic小型工具包,支持单个变量上的无锁线程安全编程。以上是这个包下的所有相关类,java.util.concurrent.atomic.AtomicLong类只是其中的一种,提供了可以被原子地读取和写入的底层long值的操作,并且还包含高级原子操作。下面我们一来学习这个类的方法及用途。方法:示例:以下AtomicLongTest程序显示了在基于线程的环境中使用AtomicLong的计数器的安全实现,帮助我们更好的理解为什么使用。原创 2020-06-01 17:10:16 · 590 阅读 · 0 评论 -
java并发Condition接口
简介:之前文章中介绍过线程间通信示例,里面的用到了Object.wait和Object.notify,同时也知晓这两个方法要配合synchronized关键字使用,synchronized依赖于JVM,实现机制都在虚拟机层面,并没有暴露给我们。作为Lock系列功能中的Condition接口配合lock锁是可以替代Object监视器方法,依赖于API,它具有很好的灵活性。方法:示例:为了更好的...原创 2020-05-06 17:29:20 · 148 阅读 · 0 评论 -
Java并发Lock接口
简介:Lock 接口实现类提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition (Condition实现类ConditonObject来实现线程的通知/与唤醒机制,关于Condition后期会进行介绍)对象。锁是用于控制多线程访问共享资源的工具。通常,锁提供对共享资源的独占访问:一次只有...原创 2020-04-27 17:04:02 · 126 阅读 · 0 评论 -
Java并发死锁
简介:所谓死锁就是描述两个或多个线程因竞争资源出现等待彼此造成永久阻塞的情况,若无外力作用,形成一种“僵局”。java 死锁产生的四个必要条件:1、互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。2、请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。3、不剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。4...原创 2020-04-24 16:28:40 · 156 阅读 · 0 评论 -
Java并发线程间通信
简介:java既然作为支持多线程编程语言,当你开发两个或多个线程交换一些信息的应用程序时,线程间的通信还是很重要的。在这里使用wait()和notify()/notifyAll()方法以及syncrhoized关键字实现一个简单的线程间对话通信。您可以使用相同的概念来创建一个复杂的系统。注意事项:不了解wait()和notify()/notifyAll()方法看我上篇文章-点击为什么使用sy...原创 2020-04-23 17:14:10 · 117 阅读 · 0 评论 -
Java并发主要操作
简介:java核心提供了多线程程序的完全控制。我们完全可以根据的要求开发出完全暂停,停止或恢复的多线程程序。有各种方法可以控制线程的行为。下面介绍这些常用方法的特性sleep()—使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行)suspend() —使当前线程处于挂起状态,要恢复目标线程调用resume()方法resume()—恢复使用suspend()方法挂起的线程。stop()...原创 2020-04-22 17:16:07 · 197 阅读 · 0 评论 -
Java并发是什么
简介: java是一种多线程编程语言,我们可以使用java来开发多线程程序。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 多线程程序包含两个或多个可同时运行的部分,每个部分可以同时处理不同的任务,从而能更好地利用可用资源达到充分利用 CPU 的目的。这里定义和线程相关的另一个术语 - 进程:进程是程序的一次性执行过程,是系统运行程序的基本单位...原创 2020-04-21 17:24:15 · 1338 阅读 · 0 评论