多线程
毛辣叮
看见夕阳下的奔跑,那是我遗失的青春。
展开
-
JDK 7新增ForkJoinPool,简单实例
public class CountTask extends RecursiveTask {private static final long serialVersionUID = -3454816350595604316L;private static final int threshold = 2; // 阈值private int start;private int end;原创 2017-02-17 15:31:50 · 1823 阅读 · 0 评论 -
多线程-李兴华
-----线程的强制运行--------------------join()-----------------------------------class MyThread implement Runnable{public void run(){ for(int i=0;i System.out.print(Thread.currentThread().getNa原创 2017-08-06 22:50:05 · 298 阅读 · 0 评论 -
ThreadLocal 原理
在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象,ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLoc原创 2017-07-26 11:33:17 · 247 阅读 · 0 评论 -
自定义线程池---ThreadPoolExecutor
如果Executors工厂类无法满足我们的需求的时候我们可以自己去创建线程池。ThreadPoolExecutor原创 2017-08-01 22:49:32 · 232 阅读 · 0 评论 -
重入锁(ReentrantLock)、重入读写锁(ReentrantReadWriteLock)、线程通信(Condition)
//重入锁private Lock lock = new ReentrantLock(); 或者privateReentrantLock lock = new ReentrantLock(); 当使用Lock来保证线程同步时,需使用Condition对象来使线程保持协调。Condition实例被绑定在一个Lock的对象上,使用Lock对象的方法newC原创 2017-08-08 16:33:42 · 338 阅读 · 0 评论 -
使用wait和notify模拟queue
模拟阻塞的queue原创 2017-07-23 11:18:43 · 1011 阅读 · 0 评论 -
wait 和notify的使用
注意:1 使用wait和notify实现线程间的通讯。2 wait和notify必须配合synchronize关键字一起使用。3 wait方法--》释放锁,notify方法--》不释放锁-----------------------------------------------------不使用wait和notify------------最古老的------------原创 2017-07-23 10:19:26 · 667 阅读 · 0 评论 -
ThreadLocal
知其然synchronized这类线程同步的机制可以解决多线程并发问题,在这种解决方案下,多个线程访问到的,都是同一份变量的内容。为了防止在多线程访问的过程中,可能会出现的并发错误。不得不对多个线程的访问进行同步,这样也就意味着,多个线程必须先后对变量的值进行访问或者修改,这是一种以延长访问时间来换取线程安全性的策略。而ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线原创 2017-07-22 23:17:42 · 197 阅读 · 0 评论 -
读写锁ReadWriteLock
ReentrantReadWriteLock是ReadWriteLock接口的实现类,接合线程使用。(3).使用注意读锁是排写锁操作的,读锁不排读锁操作,多个读锁可以并发不阻塞。即在读锁获取后和读锁释放之前,写锁并不能被任何线程获得,多个读锁同时作用期间,试图获取写锁的线程都处于等待状态,当最后一个读锁释放后,试图获取写锁的线程才有机原创 2017-07-22 23:09:43 · 219 阅读 · 0 评论 -
ReentrantLock 锁
ReentrantLock是一个可重入的互斥锁,ReentrantLock由最近成功获取锁,还没有释放的线程所拥有,当锁被另一个线程拥有时,调用lock的线程可以成功获取锁。如果锁已经被当前线程拥有,当前线程会立即返回。此类的构造方法提供一个可选的公平参数。public class LockTest {private final Lock lock = new Reen原创 2017-07-22 22:39:38 · 343 阅读 · 0 评论 -
volatile 关键字
volatile 关键字 :主要作用是是变量在多个线程间可见。private int a=0;传统的在a变量上面枷锁 这种效率是不高的。public class RunThread extends Thread{ // private boolean isRunning = true;private volatile boolean isRunning原创 2017-07-22 10:02:18 · 200 阅读 · 0 评论 -
synchronized 关键字
public class ThreadMode1 extends Thread {private int count = 5;@Override // public void run() { 不加关键字实现不通过结果public synchronized void run() { // 加关键字 synchronized 枷锁 (可以实现同步) c原创 2017-07-21 11:04:36 · 265 阅读 · 0 评论 -
JDK多任务执行框架--------Executor框架
为了更好的控制多线程,进jdk提供了一套线程框架Executor ,它在Java.util.concurrent包中,是jdk并发报的核心,其中有一个重要的类:Executors,它扮演这个线程工厂的角色,我们通过Executors可以创建特定的功能线程池。1 . newFixedThreadPool() 指定固定大小线程池2 . newSingleThreadExecutor()原创 2017-08-01 22:45:02 · 545 阅读 · 0 评论