
并发多线程
文章平均质量分 72
fantasyagain
这个作者很懒,什么都没留下…
展开
-
Java并发多线程常用包、类和接口
Java.util.concurrent.locks.Lock Lock接口 ReadWriteLock接口 Condition接口 ReentrantLockJava.util.concurrent.atomic AtomicIntegerAtomicLongAtomicReferen原创 2015-02-13 17:43:26 · 3721 阅读 · 0 评论 -
java编程思想并发学习笔记(rocket and rockets)
TestBlockingQueue.javapackage com.test.concurrent;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.LinkedBlockingQueue;import原创 2015-02-15 11:18:42 · 779 阅读 · 0 评论 -
Thinking in Java学习笔记 Semaphore控制的资源池
SemaphoreDemo.java一个资源池Pool,可以由多个线程检出和检入其中的资源,由Semaphore控制同步问题,由数组来记录每个资源的检出/检入状态CheckoutTask这个线程,启动多个,负责检入检出资源。资源类Fat,有比较复杂的计算同时在main()方法中对资源进行了检出和检入操作package com.test.concu原创 2015-02-27 14:04:00 · 1108 阅读 · 0 评论 -
Thinking in Java学习笔记 Thread.UncaughtExceptionHandler接口实现捕获线程内异常
实现自定义类来实现Thread.UncaughtExceptionHandler接口,在unCaughtExceptionHandler方法中编写自已需要的处理代码实现自定义的ThreadFactory,newThread的时候调用setUncaughtExceptionHandler方法来指定自定义的UncaughtExceptionHandler使用自定的ThreadFactory来创原创 2015-03-05 10:46:31 · 695 阅读 · 0 评论 -
Thinking in Java学习笔记,简单包装Thread,实现快速实现线程
package com.test.concurrent;public class SimpleThread extends Thread { private static int counter=0; private int countDown=5; public SimpleThread(){ super(String.valueOf(counter++)); run();原创 2015-03-04 16:57:56 · 678 阅读 · 0 评论 -
Thinking in Java学习笔记Daemon线程和ThreadFactory接口
Daemon线程在主线程执行完毕后就会自动结束,设置Daemon线程setDaemon方法需要在run之前ThreadFactory接口只有一个newThread方法,接受一个Runnable的实例对象,用以实现自定义的线程package com.test.concurrent;import java.util.concurrent.ExecutorService;i原创 2015-03-04 16:37:26 · 1846 阅读 · 0 评论 -
Thinking in Java学习笔记 Lock在处理结构上的优越性,相对于synchronized
Lock使用时,使用try..finally..语句,在finally中Lock.unLock来释放锁,同时可以在处理失败的情况下,在finally语句中做优雅的处理而synchronized语句则无法优雅的结束,发生异常直接退出了package com.test.concurrent;import java.util.concurrent.ExecutorService;i原创 2015-03-05 13:11:23 · 493 阅读 · 0 评论 -
Thinking in Java学习笔记 synchronized同步方法和synchronized同步块
对象的两个synchronized方法被两个线程分别调用,在一个获取到锁的情况下,另一个synchronized方法需要等待第一个synchronized方法执行完毕才能获得锁开始执行。也就是说,一个对象实例只有一个锁,所有的synchronized方法都要在获取到这一个锁的情况下才能执行,否则就要等待。package com.test.concurrent;public cl原创 2015-03-06 11:23:56 · 468 阅读 · 0 评论 -
Thinking in Java学习笔记,可以被Future.cancel()中断的资源
线程sleep是可以被Future.cacel()中断的线程中的IO阻塞时,线程无法被Future.cancel()中断线程中的synchronized锁阻塞时,线程无法被Future.cancel()方法中断package com.test.concurrent;import java.io.IOException;import java.io.InputStr原创 2015-03-09 14:08:32 · 6704 阅读 · 1 评论 -
Thinking in Java学习笔记,使用Exchanger交换资源
生产者生产出的产品放入生产者队列,消费者等待消费者队列和生产者队列完成交换package com.test.concurrent;import java.util.ArrayList;import java.util.List;import java.util.concurrent.CopyOnWriteArrayList;import java.util.concurren原创 2015-02-27 15:57:12 · 751 阅读 · 0 评论 -
sun.misc.unsafe类的使用(转载)
Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的。如果你想搞破坏,可以使用Unsafe这个类。这个类是属于sun.* API中的类,并且它不是J2SE中真正的一部份,因此你可能找不到任何的官方文档,更可悲的是,它也没有比较好的代码文档。 实例化sun.misc.Unsafe 如果你尝试创建Unsafe类的实例转载 2015-02-13 10:57:15 · 499 阅读 · 0 评论 -
Thinking inJava学习笔记 HorseRace.java
HorseRace.java每个horse每走一步,都会停下来等待其他horse完成这一步操作cyclicBarrier的线程会在每一步所有horse完成操作后执行一次package com.test.concurrent;import java.util.ArrayList;import java.util.List;import java.util.Random;impo原创 2015-02-25 15:07:16 · 998 阅读 · 0 评论 -
Thinking in Java学习笔记ScheduledThreadPoolExecutor
温室的开灯、关灯、开水、关水、白天热电、夜晚热电、收集数据(时间温度湿度)ScheduledThreadPoolExecutor的schedule(event, delay, TimeUnit.MILLISECONDS)方法,在delay参数指定的时间后,只执行一次ScheduledThreadPoolExecutor的.scheduleAtFixedRate(event, ini原创 2015-02-26 17:22:43 · 501 阅读 · 0 评论 -
Thinking in java 哲学家进食问题
DeadlockingDiningPhilosopher.java哲学家围着圆桌坐下,左右各有一根筷子,需要同时拥有左右筷子才能进食。筷子是共享资源,使用和释放资源需要加锁处理。如果所有的哲学界都是先取左边的筷子,就会导致每个哲学家都有一根筷子,等待自己右边的哲学家释放筷子,从而陷入死锁的状态。package com.test.concurrent;import java.util原创 2015-02-25 15:17:35 · 1502 阅读 · 0 评论 -
Thinking in Java学习笔记 吐司的制作和消费过程
多个LinkedBlockingQueue队列,每个流程都有一个或两个队列,从上一个流程的队列中获取吐司,本流程处理完毕之后放入下一流程的队列每个流程通过LinkedBlockingQueue.take()方法取队列中的任务时,如果上一个流程没有完成任务,队列是空的,则会堵塞在take()方法这里源码如下:public E take() throws InterruptedExcept原创 2015-02-25 15:39:31 · 861 阅读 · 0 评论 -
Thinking in Java学习笔记
LinkedBlockingQueueArrayBlockingQueueSynchronizedBlockingQueueTestBlockingQueue.javapackage com.test.concurrent;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurr原创 2015-02-25 15:27:08 · 701 阅读 · 0 评论 -
JAVA并发编程学习笔记之Unsafe类
java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能:1、通过Unsafe类可以分配内存,可以释放内存;类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应。2、可以定位对象某字段的内存位置,也可以修改对转载 2015-02-13 11:08:47 · 418 阅读 · 0 评论 -
Thinking in Java学习笔记 DelayQueue和Delayed接口
DelayedTask线程要实现Delayed接口的getDelay()和compareTo()方法,放入DelayQueue队列后,通过take()方法取出时,可根据compareTo方法制定的顺序来优先取出线程执行静态类EndSentinel负责遍历所有的线程,其设置的trigger最大,最后被执行时调用ExecutorService.shutdownNow(),来结束线程的执行原创 2015-02-25 17:37:21 · 10081 阅读 · 0 评论 -
Thinking in Java学习笔记 CountDownLatch(CountDownLatchDemo.java)
CountDownLatchDemo.java每个任务线程完成一部分工作,完成后通过CountDownLatch来通知总线程,总线程通过CountDownLatch.await()等待所有子线程完成操作后,再结束package com.test.concurrent;import java.util.Random;import java.util.concurrent.Count原创 2015-02-25 15:10:45 · 618 阅读 · 0 评论 -
Thingking in Java学习笔记 wait() notifyAll()
共享资源是汽车Car,需要不断的打蜡waxed()和抛光buffed(),waxed()要等待buffed()完成,buffed()又要等待waxed()完成 package com.test.concurrent;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;原创 2015-03-09 17:27:36 · 586 阅读 · 0 评论