多线程
文章平均质量分 79
WhoCares1994
这个作者很懒,什么都没留下…
展开
-
ReentrantReadWriteLock读写锁的使用
ReentrantReadWriteLock读写锁的使用 ReentrantReadWriteLock里一共有两把锁,一把读锁,一把写锁;读写锁使用场景:适合读次数多写次数少的场景。1、线程进入读锁和写锁的前提条件:线程进入读锁的前提条件: 没有其他写锁;没有写的请求或者有写的请求,但是和持有锁得线程是同一个线程。线程进入写锁的前提条件:转载 2016-11-26 15:33:05 · 933 阅读 · 0 评论 -
扩展ThreadPoolExector
ThreadPoolExector原创 2017-04-22 17:38:29 · 349 阅读 · 0 评论 -
Executor 框架小结
在Java中,使用线程来异步执行任务,但是线程的创建和销毁都需要一定的开销,如果我们为每一个任务都新开一个线程来执行,必然对计算机造成巨大的压力。 从JDK 5开始,Java可以提供了将工作单元和执行机制分离开的工具,其中工作单元是实现了Runnable或者Callable接口类,而执行机制就是我们下面要讲到的Executor 框架。Executor 框架的结构一、任务:即工作原创 2017-03-05 22:03:00 · 262 阅读 · 0 评论 -
ExecutorService.submit()浅析(基于jdk1.6)
ExecutorService.submit()方法可以有两种入参1、实现Callable接口的类2、实现Runnable接口的类两种 方式的源码其实很类似public Future submit(Runnable task) { if (task == null) throw new NullPointerException(); RunnableFuture fta原创 2017-03-10 20:47:41 · 813 阅读 · 0 评论 -
ThreadLocal 小结
(关于 threadLocal 的网上应该有很多优秀的文章,本文用于个人整理,以及有需要的人拿来参考,有什么不正确的地方,欢迎指正,共同进步。)ThreadLocal 通常被称为本地线程变量,为什么呢?因为在多线程环境下,通过ThreadLocal,我们只要使用一个ThreadLocal对象,就可以为每个线程都可以维护一个该对象的副本,而且每个线程都可以单独修改自己的副本,并且不会影响到其原创 2017-03-06 22:47:11 · 252 阅读 · 0 评论 -
java 线程池小结
在java中,使用线程来异步执行任务,java线程的创建和销毁都需要消耗一定的资源,因此从JDK5 开始,有了线程池这个好东西。线程池(ThreadPoolExecutor)主要有以下几个好处:(1)降低资源消耗:可以重复利用已创建的线程来降低线程创建和销毁造成的消耗;(2)提高响应速度:当任务到达时,不需要等待线程创建就可以执行任务(因为线程已经在线程池里准备好了!);(3)提高原创 2017-02-28 22:35:33 · 473 阅读 · 0 评论 -
Runnable、Callable、Future接口区别
我们分别看一下这三个接口的方法:1、Runnable接口只有一个run()方法 ,并且该方法无返回值(我们相当熟悉)。public interface Runnable { public abstract void run();}2、Callable接口也只有一个call()方法,但是该方法有具体的返回值。public interface Callable {原创 2017-03-08 23:10:27 · 458 阅读 · 0 评论 -
LinkedBlockingQueue 浅析
首先我们来看一下它的代码结构public class LinkedBlockingQueue extends AbstractQueue implements BlockingQueue, java.io.Serializable { //... static class Node {//队列中存储元素的结构 E item; /**原创 2017-03-18 23:46:13 · 309 阅读 · 0 评论 -
java notify()、 notifyAll()、 wait()、sleep()、yield()、join()方法学习
notify()、notifyAll()、wait()方法都是Object类中的方法,而且都被定义为native final的,因此不可以被重写,并且这三个方法都只能在同步代码块或者方法中使用1、wait():调用某个对象的wait方法可以使当前线程立即进入阻塞状态而不继续往下执行代码,前提是此线程必须拥有此对象的锁。2、notify():调用某个对象的的notify方法可以唤醒一原创 2017-01-04 20:14:40 · 264 阅读 · 0 评论 -
Volatile 的正确使用
本文转自:https://www.ibm.com/developerworks/cn/java/j-jtp06197.htmlJava 语言中的 volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变量所需的编码较少,并且运行时开销也较少,但是它所能实现的功能也仅是 synchronized转载 2017-05-06 10:13:43 · 304 阅读 · 0 评论