多线程并发编程
文章平均质量分 82
world_snow
这个作者很懒,什么都没留下…
展开
-
java的两种同步方式, Synchronized与ReentrantLock的区别
java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。相似点: 这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作转载 2017-12-20 11:37:29 · 871 阅读 · 0 评论 -
threadlocal原理及常用应用场景
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。一.对ThreadLocal的理解 ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地转载 2017-12-19 16:38:32 · 780 阅读 · 0 评论 -
Java 并发编程:核心理论
转载地址:http://www.cnblogs.com/paddix/p/5374810.htmlJava并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java 并发编程:线程间的协作(wait/notify/sleep/yiel转载 2017-12-19 11:16:39 · 138 阅读 · 0 评论 -
Java 并发编程:volatile的使用及其原理
Java并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)Java 并发编程:volatile的使用及其原理 一、volatile转载 2017-12-19 11:15:53 · 123 阅读 · 0 评论 -
Java并发编程:Synchronized底层优化(偏向锁、轻量级锁)
Java并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)Java 并发编程:volatile的使用及其原理一、重量级锁 上篇文转载 2017-12-19 11:14:41 · 159 阅读 · 0 评论 -
Java并发编程:Synchronized及其实现原理
Java并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java 并发编程:线程间的协作(wait/notify/sleep/yield/join) Java 并发编程:volatile的使用及其原理一、Synchron转载 2017-12-19 11:13:52 · 128 阅读 · 0 评论 -
Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
Java并发编程系列:Java 并发编程:核心理论 Java并发编程:Synchronized及其实现原理Java并发编程:Synchronized底层优化(轻量级锁、偏向锁)Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)Java 并发编程:volatile的使用及其原理一、线程的状态转载 2017-12-19 11:12:51 · 125 阅读 · 0 评论 -
JAVA并发编程——守护线程(Daemon Thread)
在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemon Thread)。所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。用户转载 2017-12-18 15:47:38 · 167 阅读 · 0 评论 -
【多线程】线程池
Java中的线程池是运用场景最多的并发框架。几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2、提高相应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。3、提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使转载 2017-12-20 18:28:03 · 146 阅读 · 0 评论 -
Java多线程总结之线程安全队列Queue(2)
BlockingQueue 阻塞算法BlockingQueue作为线程容器,可以为线程同步提供有力的保障。二、BlockingQueue定义的常用方法1.BlockingQueue定义的常用方法如下: 抛出异常 特殊值 阻塞 超时插入 add(e) offer(e) put(e) offer(e, time, unit)移除 remove转载 2017-12-26 16:28:24 · 598 阅读 · 0 评论 -
Java多线程总结之线程安全队列Queue
在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列。Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非阻塞队列的典型例子是ConcurrentLinkedQueue,在实际应用中要根据实际需要选用阻塞队列或者非阻塞队列。注:什么叫线程安全?这个首先要明确。线程安全的类 ,指的是类内共享的全局变量的转载 2017-12-25 18:09:54 · 174 阅读 · 0 评论 -
Java线程:Callable和Future
接着上一篇继续并发包的学习,本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务转载 2017-12-19 14:52:28 · 114 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。以下是本文目录大纲:一.CountDownLatch用法二.CyclicBarrier用法三.Semaphore用法一.CountDownLatch用法Cou转载 2017-12-18 18:34:40 · 116 阅读 · 0 评论 -
java线程中的interrupt,isInterrupt,interrupted方法以及如何终止线程(一)
在java的线程Thread类中有三个方法,比较容易混淆,在这里解释一下(1)interrupt:置线程的中断状态(2)isInterrupt:线程是否中断(3)interrupted:返回线程的上次的中断状态,并清除中断状态举个例子:[java] view plain copy用法: class MyThread exte转载 2017-12-19 17:05:01 · 363 阅读 · 0 评论 -
java线程中的interrupt,isInterrupt,interrupted方法以及如何终止线程(二)
我们知道使用stop()、suspend()等方法在终止与恢复线程有弊端,会造成线程不安全,那么问题来了,应该如何正确终止与恢复线程呢?这里可以使用两种方法:1.使用interrupt()中断方法。2.使用volatile boolean变量进行控制。在使用interrupt方法之前,有必要介绍一下中断以及与interrupt相关的方法。中断可以理解为线程的一个标志位属性,转载 2017-12-20 17:45:29 · 906 阅读 · 0 评论 -
Java并发编程-并发编程知识点总结
1) 什么是线程? 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。J2) 线程和进程有什么区别? 线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程转载 2017-12-22 10:13:49 · 246 阅读 · 0 评论 -
volatile、ThreadLocal、synchronized等3个关键字区别
1.volatilevolatile主要是用来在多线程中同步变量。 在一般情况下,为了提升性能,每个线程在运行时都会将主内存中的变量保存一份在自己的内存中作为变量副本,但是这样就很容易出现多个线程中保存的副本变量不一致,或与主内存的中的变量值不一致的情况。而当一个变量被volatile修饰后,该变量就不能被缓存到线程的内存中,它会告诉编译器不要进行任何移出读取和写入操作的优化,换句转载 2018-01-16 11:08:11 · 178 阅读 · 0 评论