2019年6月13日
摘要: 1. Runnable接口的限制 JDK提供了ExecutorService接口表示线程池,可以通过submit提交一个任务。 但这里的task有个问题,因为继承制Runnable,如果希望返回一个结果,只能用result来表示,这样主线程获取结果,就很不方便。 因此JDK又提供了一个Callabl 阅读全文
posted @ 2019-06-13 22:37 singleSpace 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1. 线程池 Java语言内置多线程支持: 创建线程需要操作系统资源(线程资源,栈空间) 频繁创建和销毁线程需要消耗大量时间 假设我们有大量的小任务,可以让它排队执行,然后在一个线程池里有少量的线程来执行大量的任务。 使用线程池来复用线程,可以非常高效的执行大量小任务。 线程池: 线程池维护若干个线 阅读全文
posted @ 2019-06-13 21:57 singleSpace 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 1. Atomic java.util.concurrent.atomic提供了一组原子类型操作。如AtomicInteger提供了 1.1 无锁线程安全 Atomic类可以实现无锁(lock free)的线程安全(thread safe)访问 原理:CAS(Compare and Set)如果At 阅读全文
posted @ 2019-06-13 19:01 singleSpace 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 1. Concurrent 用ReentrantLock+Condition实现Blocking Queue。 Blocking Queue:当一个线程调用这个Queue的getTask()时,该方法内部可能让给线程变成等待状态,直到条件满足。线程被唤醒以后,getTask()才会返回。 而java 阅读全文
posted @ 2019-06-13 14:20 singleSpace 阅读(265) 评论(0) 推荐(0) 编辑