多线程
文章平均质量分 80
后海hh
爱好技术,喜欢专研底层和看流行的开源代码,有一定的代码洁癖,会定时优化重构代码,使其扩展性维护性和性能更好
展开
-
线程池的选用与线程数的指定
1、选用的两个角度高性能:将提交到线程池中的任务直接交给线程去处理(前提:线程数小于最大线程数),不入队缓冲执行:希望提交到线程池的任务尽量被核心线程(corePoolSize)执行掉2、高性能队列:SynchronousQueue最大线程数:一般设为Integer.MAX_VALUE(整数最大值),防止回绝任务典型案例:newCachedThreadPool尤其适合于执行原创 2017-06-30 22:38:26 · 2478 阅读 · 2 评论 -
无锁编程的原理和应用
一、基于锁的编程的缺点在传统的多线程编程中,多线程之间一般用各种锁的机制来保证正确的对共享资源进行访问和操作。只要需要共享某些数据,就应当将对它的访问串行化。比如像++count(count是整型变量)这样的简单操作也得加锁,因为即便是增量操作这样的操作,实际上也是分三步进行的:读、改、写(回)。在使用锁机制的过程中,即便在锁的粒度、负载、竞争、死锁等需要重点控制的方面解决的很好,也无法彻...原创 2018-02-25 10:04:19 · 1453 阅读 · 0 评论 -
Java并发包之Lock锁和Condition条件
一、Synchronizedsynchronized是Java的一个关键字,也就是Java语言内置的特性,如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,执行代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而获取锁的线程释放锁会有三种情况: 1. 获取锁的线程执行完该代码块,然后线程释放对锁的占有。 2. 线程执行发生异常,此时JVM会让线程自动释放锁。...原创 2018-02-23 15:00:37 · 1499 阅读 · 0 评论 -
Java并发包之闭锁/栅栏/信号量
一、Java多线程总结:描述线程的类:Runable和Thread都属于java.lang包。内置锁synchronized属于jvm关键字,内置条件队列操作接口Object.wait()/notify()/notifyAll()属于java.lang包。提供内存可见性和防止指令重排的volatile属于jvm关键字。而java.util.concurrent包(J.U.C)中包含的是...原创 2018-02-23 12:08:11 · 2950 阅读 · 0 评论 -
聊一聊ThreadLocal
对于ThreadLocal感兴趣是从一个问题开始的:ThreadLocal在何种情况下会发生内存泄露?对于这个问题的思考不得不去了解ThreadLocal本身的实现以及一些细节问题等。接下去依次介绍ThreadLocal的功能,实现细节,使用场景以及一些使用建议。概述ThreadLocal不是用来解决对象共享访问问题的,而主要提供了线程保持对象的方法和避免参数传递的方便的对象访问方式。一般情况下,...转载 2016-08-16 09:26:29 · 245 阅读 · 0 评论 -
Java多线程中join方法的理解
thread.join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。t.join(); //使调用线程 t 在此之前执行完毕。t.join(1000); //等待 t 线程,等待时间是1000毫秒 先上一段JDK中代码:/**原创 2017-06-11 14:16:56 · 787 阅读 · 0 评论 -
常见5中并发集合的对比总结
1、常用的五种并发包ConcurrentHashMapCopyOnWriteArrayListCopyOnWriteArraySetArrayBlockingQueueLinkedBlockingQueue2、ConcurrentHashMap线程安全的HashMap的实现数据结构:一个指定个数的Segment数组,数组中的每一个元素Segment相当于一个HashTabl原创 2017-06-22 18:32:07 · 1151 阅读 · 0 评论 -
多线程死锁以及解决方法
解决死锁没有简单的方法,这是因为线程产生死锁都各有各的原因,而且往往具有很高的负载。大多数软件测试产生不了足够多的负载,所以不可能暴露所有的线程错误。在这里中,下面将讨论开发过程常见的4类典型的死锁和解决对策。(1)数据库死锁 在数据库中,如果一个连接占用了另一个连接所需的数据库锁,则它可以阻塞另一个连接。如果两个或两个以上的连接相互阻塞,则它们都不能继续执行,这种情况称为数原创 2017-06-09 23:11:44 · 9213 阅读 · 0 评论 -
ThreadPoolExecutor使用+工作机理+生命周期
原文地址:http://www.cnblogs.com/java-zhao/p/5146601.html1、最基础的线程池ThreadPoolExecutor使用方式: 1 /** 2 * ThreadPoolExecutor测试类 3 * 注意: 4 * 1、ThreadPoolExecutor是一个线程池 5 * 2、多个任务都可以由该线程池中选出几条线程来执行 6 */...转载 2017-06-26 17:34:10 · 1520 阅读 · 0 评论