Thread
文章平均质量分 77
milagroo
这个作者很懒,什么都没留下…
展开
-
转 Java锁机制
内置锁 Java提供了一种内置的锁机制来支持原子性:同步代码块(synchronized 关键字 ),同步代码块包含两部分:一个作为锁的对象的引用,一个作为由这个锁保护的代码块。 synchronized { //代码块 } 每个Java对象都可以用做一个实现同步的锁,这些锁被秒为内置锁(Intrinsic Lock)或监视锁(Monitor Lock),线程...原创 2014-05-15 17:14:48 · 289 阅读 · 0 评论 -
转 java线程安全总结
最近想将java基础的一些东西都整理整理,写下来,这是对知识的总结,也是一种乐趣。已经拟好了提纲,大概分为这几个主题: java线程安全,java垃圾收集,java并发包详细介绍,java profile和jvm性能调优 。慢慢写吧。本人jameswxx原创文章,转载请注明出处,我费了很多心血,多谢了。关于java线程安全,网上有很多资料,我只想从自己的角度总结对这方面的考虑,有时候写东西是很痛...原创 2014-03-27 16:18:10 · 160 阅读 · 0 评论 -
Lock、ReentrantLock和AbstractQueuedSynchronizer的源码要点分析整理
前面已经说了很多Java并发和线程安全的东西,也提到并对比了内在锁和J.U.C包(java.util.concurrent包,后同)中Lock的锁。从这篇开始,对Java并发的整理从理论进入“实践”阶段,本篇对Lock、ReentrantLock和AbstractQueuedSynchronizer源码做简要分析和整理。先从Lock这个interface说起,然后分析ReentrantLock...原创 2014-03-27 16:16:15 · 84 阅读 · 0 评论 -
深入JVM锁机制-Lock
本文继续分析JVM中的另一种锁Lock的实现。与synchronized不同的是,Lock完全用Java写成,在java这个层面是无关JVM实现的。 在java.util.concurrent.locks包中有很多Lock的实现类,常用的有ReentrantLock、ReadWriteLock(实现类ReentrantReadWriteLock),其实现都依赖java.util.concur...原创 2014-03-27 16:15:57 · 126 阅读 · 0 评论 -
深入JVM锁机制-synchronized
目前在Java中存在两种锁机制:synchronized和Lock,Lock接口及其实现类是JDK5增加的内容,其作者是大名鼎鼎的并发专家Doug Lea。本文并不比较synchronized与Lock孰优孰劣,只是介绍二者的实现原理。 数据同步需要依赖锁,那锁的同步又依赖谁?synchronized给出的答案是在软件层面依赖JVM,而Lock给出的方案是在硬件层面依赖特殊的CPU...原创 2014-03-27 16:15:32 · 76 阅读 · 0 评论 -
Java线程安全杂谈——锁、状态依赖与协同以及锁优化
从谈Java并发开始synchronized和锁就时常被谈到,上篇讲Java内存模型特点的时候,也说道用synchronized几乎可以同时满足原子性、可见性和有序性三点,那本篇就来说一下锁的概念、synchronized和API层面Lock锁框架的比较选择。后面也会讲到状态依赖与协同问题、条件队列和锁优化。 先说说synchronized。synchronized关键字可谓是并发里的常见词,...原创 2014-03-26 14:44:26 · 71 阅读 · 0 评论 -
Callable、Future和CompletionService
在整理执行器Executor之前,需要提到这样几个类/接口,这些类在使用执行器实现并发开发的时候是比较有用的,他们就是Callable、Future和CompletionService。 0. Callable 在最开始整理Java多线程并发的文章时就提到过了,Runnable是在JDK1.0中就有的。我们再来回头看下java.lang.Runnable: [java] v...原创 2014-03-26 14:43:01 · 92 阅读 · 0 评论 -
关于Java thread的interrupt, isInterrupt, interrupted
在《Java网络编程》上看到一个例子, 说是用thread.interrupt()去关闭在等待的线程。不太明白,于是去查了一下Java的API。 有兴趣的同行们可以先看看API的内容,再看以下总结: 1. thread.isInterrupt()和Thread.interrupted()都返回当前线程interrupt的状态 thread.isInterrupt()是非静态函数,...原创 2014-03-26 14:41:02 · 200 阅读 · 0 评论 -
Java并发编程中CountDownLatch和CyclicBarrier的使用
在多线程程序设计中,经常会遇到一个线程等待一个或多个线程的场景,遇到这样的场景应该如何解决? 如果是一个线程等待一个线程,则可以通过await()和notify()来实现; 如果是一个线程等待多个线程,则就可以使用CountDownLatch和CyclicBarrier来实现比较好的控制。 下面来详细描述下CountDownLatch的应用场景: 例如:百米赛跑:8名运动员同时起跑,由于...原创 2014-03-26 14:39:52 · 76 阅读 · 0 评论 -
Java线程阻塞中断和LockSupport问题
在学习CountDownLatch的时候非常关心它是如何阻塞线程和唤醒线程的。最后就追踪到了LockSupport。这个类有着wait(),notify()类似的功能,不过更精准。 LockSupport.park(Thread thread),//阻塞thread LockSupport.unpark(Thread thread) //唤醒thread这两个方法是相对应...原创 2014-03-26 14:38:48 · 82 阅读 · 0 评论 -
ThreadPoolExecutor线程池
ThreadPoolExecutor的工作机制: 整个ThreadPoolExecutor的任务处理有4步操作: 第一步,初始的poolSize < corePoolSize,提交的runnable任务,会直接做为new一个Thread的参数,立马执行第二步,当提交的任务数超过了corePoolSize,就进入了第二步操作。会将当前的runable提交到一个block...原创 2014-03-25 16:25:18 · 98 阅读 · 0 评论 -
Executor/ExecutorService和ExecutorCompletionService
上篇文章讲到了Callable和Futre,这篇文章接着来说说执行器相关的接口和类。在JavaSE5之后,在API的java.util.concurrent包中给出了Executor这样一个接口。因为在Java7之前,JDK中这个接口最终都是以一个线程池ThreadPool的方式实现的,所以很多人也直接叫“线程池”。除了ThreadPool之外,还有ForkJoinPool实现,本文中,我们不妨...原创 2014-03-25 16:24:28 · 79 阅读 · 0 评论 -
Java并发编程总结
Executors•这是一种任务分解。任务提供者和执行者•在本线程内完成,或者交给专门的Executor去执行。 BlockingQueue•常用的工具类,用于数据流分解•读取阻塞,插入阻塞(可选)•ArrayBlockingQueue–FIFO,有上限•LinkedBlockingQueue–FIFO,可能有上限•PriorityBlockingQueue–按优先次序,无上限•Synchro...原创 2014-03-25 15:59:24 · 60 阅读 · 0 评论 -
线程同步的方法
wait():作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wait所在的代码块的锁,并在其他线程调用notify或者notifyAll方法时恢复到竞争锁状态(一旦获得锁就恢复执行)。 调用wait方法需要注意几点: 第一点:wait被调用的时候必须在拥有锁(即synchronized修饰的)的代码块中。 第二点:恢复...原创 2014-03-25 15:44:12 · 78 阅读 · 0 评论 -
转 Java并发包java.util.concurrent简介
JDK从1.5在多线程编程中提供了并发包java.util.concurrent,此包包括了几个小的、已标准化的可扩展框架,以及一些提供有用功能的类。主要代码由大牛Doug Lea完成,其实是在jdk1.4时代,由于java语言内置对多线程编程的支持比较基础和有限,所以他写了这个,因为实在太过于优秀,所以被加入到jdk之中。 concurrent包基本有3个package组成 java....原创 2014-05-15 17:19:08 · 147 阅读 · 0 评论 -
转 Java并发编程J.U.C之Condition
在上一篇中,我们了解了下J.U.C的锁的获取与释放的过程 ,这个过程主要通过在A.Q.S中维持一个等待队列来实现,其中我们也提到了,在A.Q.S中除了一个等待队列之外,还有一个Condition队列,在了解Condition队列之前,先来看一下Condition是怎么回事: 写道 The synchronizer framework provides a ConditionObjec...原创 2014-03-27 16:24:04 · 107 阅读 · 0 评论