并发多线程
文章平均质量分 72
fantasyagain
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
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 · 791 阅读 · 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 · 682 阅读 · 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 · 6812 阅读 · 1 评论 -
Thinking in Java学习笔记 synchronized同步方法和synchronized同步块
对象的两个synchronized方法被两个线程分别调用,在一个获取到锁的情况下,另一个synchronized方法需要等待第一个synchronized方法执行完毕才能获得锁开始执行。 也就是说,一个对象实例只有一个锁,所有的synchronized方法都要在获取到这一个锁的情况下才能执行,否则就要等待。 package com.test.concurrent; public cl原创 2015-03-06 11:23:56 · 501 阅读 · 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 · 532 阅读 · 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 · 1974 阅读 · 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 · 722 阅读 · 0 评论 -
Thinking in Java学习笔记 Thread.UncaughtExceptionHandler接口实现捕获线程内异常
实现自定义类来实现Thread.UncaughtExceptionHandler接口,在unCaughtExceptionHandler方法中编写自已需要的处理代码 实现自定义的ThreadFactory,newThread的时候调用setUncaughtExceptionHandler方法来指定自定义的UncaughtExceptionHandler 使用自定的ThreadFactory来创原创 2015-03-05 10:46:31 · 742 阅读 · 0 评论 -
Thinking in Java学习笔记 Semaphore控制的资源池
SemaphoreDemo.java 一个资源池Pool,可以由多个线程检出和检入其中的资源,由Semaphore控制同步问题,由数组来记录每个资源的检出/检入状态 CheckoutTask这个线程,启动多个,负责检入检出资源。 资源类Fat,有比较复杂的计算 同时在main()方法中对资源进行了检出和检入操作 package com.test.concu原创 2015-02-27 14:04:00 · 1173 阅读 · 0 评论 -
java编程思想并发学习笔记(rocket and rockets)
TestBlockingQueue.java package 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 · 810 阅读 · 0 评论 -
Java并发多线程常用包、类和接口
Java.util.concurrent.locks.Lock Lock接口 ReadWriteLock接口 Condition接口 ReentrantLock Java.util.concurrent.atomic AtomicInteger AtomicLong AtomicReferen原创 2015-02-13 17:43:26 · 3774 阅读 · 0 评论 -
sun.misc.unsafe类的使用(转载)
Java是一个安全的开发工具,它阻止开发人员犯很多低级的错误,而大部份的错误都是基于内存管理方面的。如果你想搞破坏,可以使用Unsafe这个类。这个类是属于sun.* API中的类,并且它不是J2SE中真正的一部份,因此你可能找不到任何的官方文档,更可悲的是,它也没有比较好的代码文档。 实例化sun.misc.Unsafe 如果你尝试创建Unsafe类的实例转载 2015-02-13 10:57:15 · 537 阅读 · 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 · 662 阅读 · 0 评论 -
Thinking in Java学习笔记 DelayQueue和Delayed接口
DelayedTask线程要实现Delayed接口的getDelay()和compareTo()方法,放入DelayQueue队列后,通过take()方法取出时,可根据compareTo方法制定的顺序来优先取出线程执行 静态类EndSentinel负责遍历所有的线程,其设置的trigger最大,最后被执行时调用ExecutorService.shutdownNow(),来结束线程的执行原创 2015-02-25 17:37:21 · 10174 阅读 · 0 评论 -
JAVA并发编程学习笔记之Unsafe类
java不能直接访问操作系统底层,而是通过本地方法来访问。Unsafe类提供了硬件级别的原子操作,主要提供了以下功能: 1、通过Unsafe类可以分配内存,可以释放内存; 类中提供的3个本地方法allocateMemory、reallocateMemory、freeMemory分别用于分配内存,扩充内存和释放内存,与C语言中的3个方法对应。 2、可以定位对象某字段的内存位置,也可以修改对转载 2015-02-13 11:08:47 · 456 阅读 · 0 评论 -
Thinking in Java学习笔记
LinkedBlockingQueue ArrayBlockingQueue SynchronizedBlockingQueue TestBlockingQueue.java package com.test.concurrent; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurr原创 2015-02-25 15:27:08 · 741 阅读 · 0 评论 -
Thinking in Java学习笔记 吐司的制作和消费过程
多个LinkedBlockingQueue队列,每个流程都有一个或两个队列,从上一个流程的队列中获取吐司,本流程处理完毕之后放入下一流程的队列 每个流程通过LinkedBlockingQueue.take()方法取队列中的任务时,如果上一个流程没有完成任务,队列是空的,则会堵塞在take()方法这里 源码如下: public E take() throws InterruptedExcept原创 2015-02-25 15:39:31 · 912 阅读 · 0 评论 -
Thinking in java 哲学家进食问题
DeadlockingDiningPhilosopher.java 哲学家围着圆桌坐下,左右各有一根筷子,需要同时拥有左右筷子才能进食。 筷子是共享资源,使用和释放资源需要加锁处理。如果所有的哲学界都是先取左边的筷子,就会导致每个哲学家都有一根筷子,等待自己右边的哲学家释放筷子,从而陷入死锁的状态。 package com.test.concurrent; import java.util原创 2015-02-25 15:17:35 · 1562 阅读 · 0 评论 -
Thinking in Java学习笔记ScheduledThreadPoolExecutor
温室的开灯、关灯、开水、关水、白天热电、夜晚热电、收集数据(时间温度湿度) ScheduledThreadPoolExecutor的schedule(event, delay, TimeUnit.MILLISECONDS)方法,在delay参数指定的时间后,只执行一次 ScheduledThreadPoolExecutor的.scheduleAtFixedRate(event, ini原创 2015-02-26 17:22:43 · 538 阅读 · 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 · 1036 阅读 · 0 评论
分享