上一页 1 ··· 8 9 10 11 12 13 14 下一页

2018年10月11日

CAS(Compare And Swap)

摘要: 之前的文章讲了ReentrantLock和synchronized都是通过锁来保证线程安全的,锁机制存在一些问题,例如: ❤ 在多线程的竞争下,加锁、释放锁会导致很多线程的上下文切换和调度,对性能有一定的影响; ❤ 一个线程持有锁会导致其他需要此锁的线程挂起(强行在锁的区域将并行变为串行); ❤ 使 阅读全文

posted @ 2018-10-11 14:43 AoTuDeMan 阅读(309) 评论(0) 推荐(1) 编辑

2018年10月10日

枚举(enum)

摘要: 枚举类型是指由一组固定的常量组成的合法值的类型。例如一年中的季节,太阳系的行星或者一副牌的花色等,在还没有引入枚举类型之前,表示枚举类型的常用模式是声明一组具名的int常量,一个类型成员一个常量,如下所示: 这样的方式叫做int枚举模式,这种模式有很多缺点: ⑴ 在类型的安全性和使用的方便性来说,对 阅读全文

posted @ 2018-10-10 14:43 AoTuDeMan 阅读(586) 评论(0) 推荐(0) 编辑

高效读写的队列:ConcurrentLinkedQueue

摘要: 队列(Queue)也是常用的数据结构之一。在JDK中提供了一个ConcurrentLinkedQueue类用来实现高并发的队列。从名字可以看出,这个队列是使用链表作为其数据的结构的。ConcurrentLinkedQueue应该算是在高并发的环境中性能最好的了。它之所以有很好的性能,是因为其内部复杂 阅读全文

posted @ 2018-10-10 10:45 AoTuDeMan 阅读(9789) 评论(4) 推荐(1) 编辑

2018年10月8日

线程池的堆栈问题

摘要: 前面的文章已经讲了线程池和线程池的内部实现,这篇文章来了解线程池出错的堆栈信息的打印,毕竟异常堆栈信息的重要性对于程序员来说就像是指南针对于茫茫大海上的船只一样,没有指南针船只只能更加艰难的寻找方向,没有异常堆栈信息,排查问题时,也就只能像大海捞针一样,慢慢琢磨了。 看下面的例子: 上述代码是将Di 阅读全文

posted @ 2018-10-08 15:22 AoTuDeMan 阅读(555) 评论(0) 推荐(0) 编辑

2018年9月28日

内部类(嵌套类)

摘要: 嵌套类是指被定义在另一个类的内部的类。 嵌套类存在的目的是:只是为它的外部类提供服务; outer.java里面定义了一个内部类inner,运行时,一旦编译成功,就会生成两个完全不同的.class文件,分别是outer.class和outer$inner.class。 嵌套类分为四种:静态成员类,非 阅读全文

posted @ 2018-09-28 16:49 AoTuDeMan 阅读(819) 评论(0) 推荐(0) 编辑

线程池的内部实现

摘要: 上一篇文章讲了线程池的基本用法和一些使用技巧,这篇文章就继续深入的了解线程池,看看常用的线程池的内部实现,话不多说,开始: 对于几个核心的线程池,无论是newFixedThreadPool(int nThreads),newSingleThreadExecutor()和newCacheedThrea 阅读全文

posted @ 2018-09-28 09:25 AoTuDeMan 阅读(550) 评论(0) 推荐(0) 编辑

2018年9月26日

线程池

摘要: 多线程的软件设计方法确实可以最大限度的发挥现代多核处理器的计算能力,提高生产系统的吞吐量和性能。但是,若不加控制和管理的随意使用线程,对系统的性能反而会产生不利的影响。 首先,虽然与进程相比,线程是一种轻量级的工具,但是其创建和关闭依然需要花费时间,如果为每一个小的任务都创建一个线程,很有可能出现创 阅读全文

posted @ 2018-09-26 17:24 AoTuDeMan 阅读(442) 评论(0) 推荐(0) 编辑

线程阻塞工具类:LockSupport

摘要: LockSupport是一个非常方便实用的线程阻塞工具,它可以在线程内任意位置让线程阻塞。和Thread.suspend()相比,它弥补了由于resume()在前发生,导致线程无法继续执行的情况;和 Object.wait()相比,它不需要先获取某个对象的锁,也不会抛出InterruptedExce 阅读全文

posted @ 2018-09-26 10:52 AoTuDeMan 阅读(357) 评论(0) 推荐(0) 编辑

2018年9月25日

CountDownLatch(倒计时器)、CyclicBarrier(循环栅栏)

摘要: CountDownLatch(): CountDownLatch是一个非常实用的多线程控制工具类,这个工具通常用来控制线程等待,它可以让某一个线程等到倒计时结束,再开始执行。 CountDownLatch的构造函数接收一个整数为参数,即当前这个计数器的计数个数。 下面演示下CountDownLatc 阅读全文

posted @ 2018-09-25 17:34 AoTuDeMan 阅读(489) 评论(0) 推荐(0) 编辑

ReentrantReadWriteLock(读写锁)

摘要: ReentrantReadWriteLock是JDK5中提供的读写分离锁。读写分离锁可以有效的帮助减少锁的竞争,以此来提升系统的性能。用锁分离的机制来提升性能也非常好理解,比如线程A,B,C进行写操作,D,E,F进行读操作,如果使用ReentrantLock或者synchronized关键字,这些线 阅读全文

posted @ 2018-09-25 15:30 AoTuDeMan 阅读(340) 评论(0) 推荐(0) 编辑

上一页 1 ··· 8 9 10 11 12 13 14 下一页

导航