JAVA
文章平均质量分 73
Laputa_SKY
这个作者很懒,什么都没留下…
展开
-
java锁的种类以及辨析(一):自旋锁
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。1、自旋锁自旋锁是采用让当前线程不停地的在循环体内执行实现的,当循环的条件被其他线程改变时 才能进入临界区。public...原创 2018-04-18 11:16:32 · 164 阅读 · 0 评论 -
Java多线程系列--“基础篇”08之 join()
概要本章,会对Thread中join()方法进行介绍。涉及到的内容包括:1. join()介绍2. join()源码分析(基于JDK1.7.0_40)3. join()示例转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479275.html 1. join()介绍join() 定义在Thread.java中。join() 的作用:让“主线程”等待“子...转载 2018-04-19 17:07:30 · 163 阅读 · 0 评论 -
Java多线程系列--“基础篇”09之 interrupt()和线程终止方式(包含LockSupport对interrupt()方法的响应和线程的两阶段关闭方式)
概要本章,会对线程的interrupt()中断和终止方式进行介绍。涉及到的内容包括:1. interrupt()说明2. 终止线程的方式 2.1 终止处于“阻塞状态”的线程 2.2 终止处于“运行状态”的线程3. 终止线程的示例4. interrupted() 和 isInterrupted()的区别转载请注明出处:http://www.cnblogs.com/skywang12345/p/3...转载 2018-04-22 23:12:04 · 195 阅读 · 0 评论 -
LockSupport是可重入的还是不可重入的
LockSupport是不可重入锁。 LockSupport是JDK中比较底层的类,用来创建锁和其他同步工具类的基本线程阻塞原语。java锁和同步器框架的核心AQS:AbstractQueuedSynchronizer,就是通过调用LockSupport.park()和LockSupport.unpark()实现线程的阻塞和唤醒的。LockSupport很类似于二元信号量(只有1个许可证可...原创 2018-04-19 17:08:17 · 577 阅读 · 0 评论 -
LockSupport对Thread.interrupt()的响应
下面我们来看下LockSupport对应中断的响应性 public static void t2() throws Exception { Thread t = new Thread(new Runnable() { private int count = 0; @Override ...原创 2018-04-19 17:08:25 · 404 阅读 · 0 评论 -
Java多线程系列--“基础篇”10之 线程优先级和守护线程
概要本章,会对守护线程和线程优先级进行介绍。涉及到的内容包括:1. 线程优先级的介绍2. 线程优先级的示例3. 守护线程的示例转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479982.html 1. 线程优先级的介绍java 中的线程优先级的范围是1~10,默认的优先级是5。“高优先级线程”会优先于“低优先级线程”执行。java 中有两种线程:用户...转载 2018-04-22 23:04:50 · 184 阅读 · 0 评论 -
Java多线程系列--“基础篇”11之 生产消费者问题
概要本章,会对“生产/消费者问题”进行讨论。涉及到的内容包括:1. 生产/消费者模型2. 生产/消费者实现转载请注明出处:http://www.cnblogs.com/skywang12345/p/3480016.html 1. 生产/消费者模型生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”、“消费者”、“仓库”和“产品”。他们之间的关系如下:(01) 生产者仅仅在仓储未满时...转载 2018-04-22 23:07:07 · 158 阅读 · 0 评论 -
Java线程两阶段终止模式
一 Two-Phase Termination Pattern Two-Phase Termination Pattern,指的就是当希望结束一个线程的时候,送出一个终止请求,但是不会马上停止,做一些刷新工作。进入“终止处理中”,在该状态下,不会进行该线程日常工作任务的操作,而是进行一些终止操作。 这个方式所考虑的因素如下: 1,必须要考虑到使得该线程能够安全的结束,Thread中的...转载 2018-04-22 23:55:56 · 415 阅读 · 0 评论 -
Java多线程系列--“基础篇”07之 线程休眠
概要本章,会对Thread中sleep()方法进行介绍。涉及到的内容包括:1. sleep()介绍2. sleep()示例3. sleep() 与 wait()的比较转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479256.html 1. sleep()介绍sleep() 定义在Thread.java中。sleep() 的作用是让当前线程休眠,即当...转载 2018-04-19 17:07:19 · 210 阅读 · 0 评论 -
Java多线程系列--“基础篇”06之 线程让步
概要本章,会对Thread中的线程让步方法yield()进行介绍。涉及到的内容包括:1. yield()介绍2. yield()示例3. yield() 与 wait()的比较转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479243.html 1. yield()介绍yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让...转载 2018-04-19 17:07:00 · 199 阅读 · 0 评论 -
Java锁的种类以及辨析(二):自旋锁的其他种类
锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。2.自旋锁的其他种类上篇我们讲到了自旋锁,在自旋锁中 另有三种常见的锁形式:TicketLock ,CLHlock 和M...原创 2018-04-18 11:18:06 · 143 阅读 · 0 评论 -
Java锁的种类以及辨析
Java锁的种类以及辨析 作者:山鸡锁作为并发共享数据,...转载 2018-04-18 12:07:15 · 135 阅读 · 0 评论 -
Java锁的种类以及辨析(三):阻塞锁
作者:山鸡锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 syn...转载 2018-04-18 12:09:34 · 189 阅读 · 0 评论 -
Java锁的种类以及辨析(四):可重入锁
作者:山鸡锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等 ) 。这些已经写好提供的锁为我们开发提供了便利,但是锁的具体性质以及类型却很少被提及。本系列文章将分析JAVA下常见的锁名称以及特性,为大家答疑解惑。四、可重入锁:本文里面讲的是广义上的可重入锁,而不是单指JAVA下的ReentrantLock。可重入锁,也叫...转载 2018-04-18 14:57:19 · 172 阅读 · 0 评论 -
自旋锁、排队自旋锁、MCS锁、CLH锁
自旋锁(Spin lock)自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。自旋锁适用于锁保护的临界区很小的情况,临界区很小的话,锁占用的时间就很短。简单的实现import java.util.concurrent.atomic.AtomicReference;public class SpinLock { pri...转载 2018-04-18 15:12:35 · 313 阅读 · 0 评论 -
自旋锁和缓存一致性
http://xw-z1985.iteye.com/blog/20555521、两种自旋锁的实现:TAS和TTAS1.1 TASclass TasLock { AtomicBoolean state = new AtomicBoolean(false); void lock() { while (state.getAndSet(tr...转载 2018-04-18 15:16:59 · 270 阅读 · 0 评论 -
(2)CLH锁
原文地址:http://xw-z1985.iteye.com/blog/20643721、为什么要引入CLH锁 在前一篇文章中,介绍了TAS、TTAS两种自旋锁。这两种锁的缺点是:任何一个处理器每一次对锁成功的访问(getAndSet(true)和set(false)任意一个方法的调用),都会将其他处理器的cache中的缓存失效掉。这样会导致以下后果:其他处理器无法再采用局部自旋的方式...转载 2018-04-18 15:18:57 · 230 阅读 · 0 评论 -
(3)MCS锁
http://xw-z1985.iteye.com/blog/20646441、 为什么要引入MCS锁? 在NUMA架构体系下,访问remote memory的速度要远远慢于访问local memory的速度。如下图所示(引自Companion slides for The Art of Multiprocessor Programming by Maurice Herlihy &...转载 2018-04-18 15:19:57 · 191 阅读 · 0 评论 -
Java多线程系列目录(共43篇)
原文地址:http://www.cnblogs.com/skywang12345/p/java_threads_category.html最近,在研究Java多线程的内容目录,将其内容逐步整理并发布。(一) 基础篇01. Java多线程系列--“基础篇”01之 基本概念02. Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式03. Java多线程系列--“基础篇”03之 Thre...转载 2018-04-18 15:45:56 · 202 阅读 · 0 评论 -
Java多线程系列--“基础篇”01之 基本概念
http://www.cnblogs.com/skywang12345/p/3479024.html多线程是Java中不可避免的一个重要主体。从本章开始,我们将展开对多线程的学习。接下来的内容,是对“JDK中新增JUC包”之前的Java多线程内容的讲解,涉及到的内容包括,Object类中的wait(), notify()等接口;Thread类中的接口;synchronized关键字。注:JUC包是...转载 2018-04-19 17:01:26 · 130 阅读 · 0 评论 -
Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
概要本章,我们学习“常用的实现多线程的2种方式”:Thread 和 Runnable。之所以说是常用的,是因为通过还可以通过java.util.concurrent包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现在,先对的Thread和Runnable进行了解。本章内容包括:Thread和Runnable的简介Thread和Runnable的异同点Thread和Runnable的...转载 2018-04-19 17:05:17 · 157 阅读 · 0 评论 -
Java多线程系列--“基础篇”03之 Thread中start()和run()的区别
概要Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答。本章内容包括:start() 和 run()的区别说明start() 和 run()的区别示例start() 和 run()相关源码(基于JDK1.7.0_40)转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479083.html start() 和 run(...转载 2018-04-19 17:05:38 · 175 阅读 · 0 评论 -
Java多线程系列--“基础篇”04之 synchronized关键字
概要本章,会对synchronized关键字进行介绍。涉及到的内容包括:1. synchronized原理2. synchronized基本规则3. synchronized方法 和 synchronized代码块4. 实例锁 和 全局锁转载请注明出处:http://www.cnblogs.com/skywang12345/p/3479202.html 1. synchronized原理在java...转载 2018-04-19 17:06:06 · 153 阅读 · 0 评论 -
Java多线程系列--“基础篇”05之 线程等待与唤醒
概要本章,会对线程等待/唤醒方法进行介绍。涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long timeout)和notify()4. wait() 和 notifyAll()5. 为什么notify(), wait()等函数定义在Object中,而不是Thread中转载请注明出处:http://w...转载 2018-04-19 17:06:30 · 178 阅读 · 0 评论 -
List、Set、数组之间的转换
原文地址: http://hi.baidu.com/%B0%AE%C7%E9%D1%CC%BB%A8/blog/item/b5e7fbf9efaa7b5d242df209.html ★ 数组转Collection使用Apache Jakarta Commons Collections:import org.apache.commons.collections.Col...转载 2018-05-12 12:26:21 · 177 阅读 · 0 评论