
Java multithreading
福州司马懿
大家如果觉得文章有帮助,给我个关注。谢谢大家 (+_+),失业了球介绍工作
展开
-
Java Exchanger(两线程交换数据)
简介Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据。当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用了exchange()方法,然后以线程安全的方式交换数据,之后线程A和B继续运行。测试用例package com.demo.test;import java.util.concurrent.Exchanger原创 2016-12-07 20:16:04 · 1380 阅读 · 0 评论 -
Java Semaphore
Oracle 官方文档http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Semaphore.html A counting semaphore. Conceptually, a semaphore maintains a set of permits. Each acquire() blocks if necessary原创 2016-12-07 16:03:11 · 1284 阅读 · 0 评论 -
Java CyclicBarrier
Oracle官方文档http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CyclicBarrier.html A synchronization aid that allows a set of threads to all wait for each other to reach a common barrier poin原创 2016-12-07 11:53:02 · 1159 阅读 · 0 评论 -
Java CountDownLatch
Oracle官方文档http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CountDownLatch.html A synchronization aid that allows one or more threads to wait until a set of operations being performed in原创 2016-12-07 10:17:58 · 1152 阅读 · 0 评论 -
Java ThreadGroup
ThreadGroup的作用是对加入该组的线程进行统一的管理。主要方法如下:构造方法public ThreadGroup(String name) 创建一个名为name的线程组public ThreadGroup(ThreadGroup parent,String name) 创建一个名为name的线程组,并指定它的父线程组为parent普通方法public int activeCount原创 2016-11-05 10:48:11 · 1567 阅读 · 0 评论 -
Java DaemonThread(守护线程)
Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 。只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;当最后一个非守护线程结束时,守护线程就会随着JVM一同结束工作。GC (垃圾回收器)就是一个最典型的守护线程。它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。原创 2016-11-04 17:29:38 · 1519 阅读 · 0 评论 -
Java wait、notify与synchronized的奇妙之处
synchronized是Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。synchronized就是针对内存区块申请内存锁。(1)JAVA中的Object类型都是带有一个内存锁的,在有线程获取该内存锁后,其它线程无法访问该内存,从而实现JAVA中简单的同步、互斥操作。(2)this关键字代表类的一个对象,所以其内存锁是针对相同对象的原创 2016-08-22 19:26:57 · 6860 阅读 · 2 评论 -
Java ThreadPoolExecutor机制
转自 http://825635381.iteye.com/blog/2184680一、概述 1、ThreadPoolExecutor作为java.util.concurrent包对外提供基础实现,以内部线程池的形式对外提供管理任务执行,线程调度,线程池管理等等服务; 2、Executors方法提供的线程服务,都是通过参数设置来实现不同的线程池机制。 3、先来了解其线程池管理的机制转载 2016-08-18 10:35:54 · 1623 阅读 · 0 评论 -
Java 线程池ThreadPoolExecutor使用简介
转自 http://blog.chinaunix.net/uid-20577907-id-3519578.html 一、简介 线程池类为 java.util.concurrent.ThreadPoolExecutor,常用构造方法为: ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime,转载 2016-08-18 10:33:10 · 1274 阅读 · 0 评论 -
Java BlockingQueue
转自 http://wsmajunfeng.iteye.com/blog/1629354 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。转载 2016-08-17 19:56:02 · 1604 阅读 · 0 评论 -
Map 非线程安全的证明 以及线程安全方案(Concurrent)
参考 http://blog.csdn.net/nx188/article/details/50988037一、概述 大部分容器(比如:List、Map、Set)都是设计成非线程安全的,因为任何同步都是会损耗性能的。除了部分,如Vector是线程安全的。 线程安全的定义: 比如一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items原创 2016-08-09 20:04:15 · 1871 阅读 · 0 评论 -
Java ThreadLocal
ThreadLocal就是对直接在thread中申明一个对象这种行为的封装,让调用者看起来就像静态变量一样。这样可以避免反复的申请和释放空间带来的性能损耗。 ThreadLocal在其内部定义了一个ThreadLocalMap,每当一个线程调用ThreadLocal的get方法时,它就会去map中寻找以该线程id为key的值,如果没找到,就会调用initialValue() 方法初始化该值并插入map,同时返回该值。原创 2016-07-26 09:53:09 · 1629 阅读 · 0 评论 -
Java 线程同步(wait、notify、notifyAll)
一、方法介绍1、void wait()使得线程进入等待状态,直到它被其他线程通过notify()或者notifyAll唤醒。该方法只能在同步方法(void synchronized methodName( args... ){ ... })或者 “同步块内部“ (synchronized(object){ ... })被调用。如果当前线程不是锁的持有者,该方法会抛出一个IllegalMon原创 2016-07-09 01:30:18 · 9769 阅读 · 0 评论