并发
无法无天过路客
Java程序员一枚,喜欢记录收集技术文章
展开
-
Java并发编程基础--线程
什么是线程现代操作系统在运行一个程序时会为其创建一个进程,例如启动一个Java程序,操作系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程,在一个进程里面可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉到这些线程在同时运行。一个Java程序从main()方法开始执行,然后按照既定...原创 2019-05-14 14:39:22 · 147 阅读 · 1 评论 -
Executor框架
在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。Java的线程既是工作单元,也是执行机制。工作单元包括Runnable和Callable,而执行机制由Executor框架提供。Executor框架主...原创 2019-05-28 10:37:02 · 131 阅读 · 0 评论 -
Java中的线程池
什么是线程池在Java中,如果每一个请求到达就创建一个新线程,那么创建和销毁线程所花费的时间和消耗系统资源都相当大,甚至可能要比在处理实际请求的时间和资源还要多。如果要在JVM中创建非常多的线程,可能会是系统由于过度消耗内存而导致系统资源不足。为了解决这个问题,就有了线程池的概念。线程池的核心逻辑就是提前创建好若干个线程放在一个容器中,如果有任务需要处理,则将任务直接分配给线程池中的线程来执行处...原创 2019-05-27 20:35:40 · 120 阅读 · 0 评论 -
Java并发编程基础--Java内存模型
Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。主内存和工作内存Java 内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。此处的变量与Java编程中所说的变量有所区别,它包括了实例字段...原创 2019-05-17 15:46:23 · 444 阅读 · 0 评论 -
Java并发编程基础--Synchronized
线程的合理使用能够提升程序的处理性能,同时也带来了很多麻烦,例如有一个变量i,加入一个线程去访问这个变量并进行修改,这个时候对于数据的访问和修改是没有任何问题的;但是如果多个线程对同一个变量进行修改,就会存在数据安全性的问题。对于线程安全,本质上是管理对于数据状态的访问,而且这个状态通常是共享的,可变的。共享是指这个数据变量可以被多个线程访问;可变是指这个变量的值在他的生命周期内是可以改变的。...原创 2019-05-16 09:53:58 · 266 阅读 · 0 评论 -
Java并发编程基础--volatile
在多线程并发编程中synchronized和volatile都扮演着重要角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的"可见性"。如果volatile修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。初识volatile下面这段代码演示了一个使用volatile以及没有使用volatile关...原创 2019-05-15 17:12:02 · 225 阅读 · 0 评论 -
Java并发编程--并发工具的使用和原理
Condition我们在使用synchronized的时候,经常会用到wait/notify来实现线程间的通信,在J.U.C中也提供了锁的实现机制,那在J.U.C中是否也提供了类似的线程通信的工具呢?Condition就是J.U.C提供的一个多线程协调通信的工具类,可以让某些线程一起等待某个条件,只有满足条件时,才会被唤醒。Condition的基本使用我们先写两个class,Conditio...原创 2019-05-20 21:17:57 · 280 阅读 · 0 评论 -
Java并发编程--ReentrantLock
J.U.C简介Java.util.concurrent是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件,比如线程池、阻塞队列、计时器、同步器、并发集合等等。接下来我们会了解一下经典的比较常用组件的设计思想LockLock在J.U.C中是最核心的组件,如果我们去看J.U.C包中的所有组件,我们可以发现绝大多数组件都有用到了Lock。在Lock接口出现之前,Java中的应用...原创 2019-05-19 14:05:02 · 225 阅读 · 0 评论