Java多线程
文章平均质量分 65
Lucy_Leezhi
这个作者很懒,什么都没留下…
展开
-
Java多线程之Executor框架(2)
在Thread,Runnable传统方式实现多线程执行的时候,默认这些线程是没有返回值的,如果需要返回值怎么处理,这里需要用到Executor框架的Callable接口,这个接口和Thread,Runnable语义相同。具体使用的方法是Callable接口实现任务逻辑,将此接口传递给FutureTask,FutureTask可以取得这个接口的返回值。 代码示例如下:package com.leno原创 2016-03-01 22:43:45 · 310 阅读 · 0 评论 -
Java多线程数量再次说明
Java 多线程数量说明原创 2016-02-22 19:35:25 · 329 阅读 · 0 评论 -
Java多线程Lock对象之ReentrantLock(1)
ReentrantLock原创 2016-02-22 19:41:11 · 500 阅读 · 0 评论 -
Java多线程Lock对象之ReentrantLock(2)
Condition原创 2016-02-22 22:42:01 · 369 阅读 · 0 评论 -
Java多线程Lock对象之公平锁和非公平锁
公平锁和非公平锁原创 2016-02-23 23:01:17 · 695 阅读 · 0 评论 -
Java多线程Lock对象之读写锁
在之前学习过的lock对象ReentrankLock是互斥锁,每一次只有一个线程来操作。在一些特殊的情况下效率比较低的,比如说在只读环境中,多线程操作是不会影响同步的,所以多线程并发读是没问题的,JDK中提供了读写锁,这种锁在读中可以并发执行,在写中却是互斥的。看一个例子 service类:package com.lenovo.plm.dms.p17;import java.util.concu原创 2016-02-25 19:56:43 · 470 阅读 · 0 评论 -
Java多线程Lock对象常用方法(1)
Lock对象除了有给当前对象加锁的功能,还有一系列的方法可以使用,下面逐一学习。 getHoldCount():查询当前线程保持此锁定的个数package com.lenovo.plm.dms.p18;import java.util.concurrent.locks.ReentrantLock;public class Service { private ReentrantLock lo原创 2016-02-26 22:21:52 · 381 阅读 · 0 评论 -
Java多线程Lock对象常用方法(2)
hasQueueThread(Thread thread):方法用于测试thread线程是否在等待当前lock。 hasQueueThreads():方法用于测试是否有现成在等待当前lock。package com.lenovo.plm.dms.p21;import java.util.concurrent.locks.Condition;import java.util.concurrent.原创 2016-02-27 11:13:29 · 283 阅读 · 0 评论 -
多线程系列原创文章的说明
为了尊重版权,这里标明到目前为止,多线程技术的学习都是参考如下两本书籍: Java多线程编程核心技术 高洪岩 机械工业出版社 Java并发编程实践 Brian Goetz,Tim Peierls,Joshua Bloch,Joseph Bowbeer,David Holmes,Doug Lea 机械工业出版社其中有些项目上的应用是自己经过学习写的代码,后续会有JDK多线程源代码分析,这些将会原创 2016-02-27 11:21:18 · 367 阅读 · 0 评论 -
Java多线程Lock对象常用方法(3)
下面练习一下如下几个方法: isHeldByCurrentThread():查询当前线程是否保持此锁定 isFair():判断Lock是否为公平锁 isLocked():查询lock 是否被任意线程所持有。package com.lenovo.plm.dms.p23;import java.util.concurrent.locks.ReentrantLock;public class Ser原创 2016-02-27 16:25:07 · 2203 阅读 · 0 评论 -
Java多线程Lock对象常用方法(4)
Lock对象最后一个方法,tryLock()方法 这个方法的作用是,检查当前lock是否被其他线程持有,如果是,则不持有,如果不是,则持有。看效果。package com.lenovo.plm.dms.p24;import java.util.concurrent.locks.ReentrantLock;public class Service { public ReentrantLock原创 2016-02-27 16:48:11 · 302 阅读 · 0 评论 -
Java定时任务Timer的使用
在java中有定时任务的需求可以使用Timer和TimerTask类来实现,Timer相当于一个调度器,TimerTask就是要执行的任务,一个调度器可以调度多个要执行的任务,但是是顺序执行的,所以如果有一个任务时间耗太长,那么其他任务就要被延期了,当然也可以通过TimerTask来取消所有任务,也可以通过Timer来取消任务。这个类的使用非常灵活,还可以周期性的执行任务。 Timer和Timer原创 2016-02-28 22:09:35 · 473 阅读 · 0 评论 -
关于深入学习Java的方式和理解
目前把Java多线程核心技术一书学完了,最后两章是单例模式以及线程组的学习,这两章有时间再慢慢看。后面就主要学习一些偏理论的Java编程并发实践一书,主要包括线程队列等内容,内存模型,以及JVM原理部分。这一部分过了后,就会开始分析锁Lock,以及常用Java对象的源代码。完了后就会开始分析一些常用框架的代码。 个人理解学完这些,才算是对java有了一些理解,才能真正开始做项目,才能保证代码的质量原创 2016-02-28 22:19:20 · 211 阅读 · 0 评论 -
ThreadLocal 对象的使用
ThreadLocal原创 2016-02-21 19:52:49 · 1068 阅读 · 0 评论 -
生产消费者模式
生产消费者模式原创 2016-02-21 10:16:53 · 275 阅读 · 0 评论 -
Java多线程之Fork/Join
Java中并行计算的框架就是Fork/Join,这个框架的原理是将一个很大的任务分解成无数个小任务,完成每个小任务后,将其计算结果再合并处理,得到任务的最终答案。 首先,这个框架有一个核心的线程池ForkJoinPool,这个线程池实现了工作窃取算法,这个名气很专业,其实就是当一个工作线程完成了属于自己的任务后,再去主动寻找其他线程还没完成的任务,这样就可以提高CPU利用率。这个线程池一般在任务中原创 2016-03-02 21:56:27 · 436 阅读 · 0 评论 -
Java ConcurrentHashMap 源码分析(2)
继续分析这个类的具体操作。上一次分析到这个类的操作实际上都是用的segment中的接口。先看put方法 final V put(K key, int hash, V value, boolean onlyIfAbsent) { HashEntry<K,V> node = tryLock() ? null : scanAndLockForPut(原创 2016-03-15 22:42:32 · 303 阅读 · 0 评论 -
Java 线程停止
Java 线程停止原创 2016-02-18 20:54:50 · 374 阅读 · 0 评论 -
Java 多线程数量
Java 并发线程数量原创 2016-02-18 20:03:35 · 557 阅读 · 0 评论 -
Java synchronized(2)
java synchronized原创 2016-02-18 15:34:03 · 297 阅读 · 0 评论 -
Java synchronized
Java synchronized原创 2016-02-17 19:47:20 · 323 阅读 · 0 评论 -
Java 并发读取List
JAVA 并发读取List 对象原创 2016-02-16 20:32:04 · 6770 阅读 · 3 评论 -
Synchronized block 为String 时的情况
Java synchronized原创 2016-02-19 23:26:51 · 646 阅读 · 0 评论 -
Java多线程的通信1
多线程通信原创 2016-02-20 13:09:11 · 310 阅读 · 0 评论 -
Java多线程的通信2
Java多线程通信原创 2016-02-20 13:31:03 · 297 阅读 · 0 评论 -
Java并发读取List2
Java并发读取元素原创 2016-02-20 14:04:36 · 1343 阅读 · 0 评论 -
Java多线程的通信3
Java多线程的通信原创 2016-02-21 09:31:54 · 312 阅读 · 0 评论 -
Java多线程之Executor框架(1)
说这个多线程框架前,先来说下为什么会有这个框架。到目前为止,有了多线程并发执行,使用Thread,Runnable来实现,性能有很大提升,但是这样有一个问题,线程的数量不是无限制的,和CPU,堆,栈,jvm,操作系统都有关系。我们自己的代码来管理这些线程,很容易出错。其次,使用Thread来实现时,它是没有返回值的。如果有返回值该怎么处理。这些等等都是Thread,Runnable这些实现所要考虑原创 2016-03-01 10:49:06 · 327 阅读 · 0 评论