java 5并发中的阻塞队列ArrayBlockingQueue的使用以及案例实现
摘要:演示一个阻塞队列的使用 部分运行结果如下, 线程Thread-1 准备放数据了 线程Thread-0 准备放数据了 线程Thread-1 已经放完数据了,目前队列有1个数据 线程Thread-0 已经放完数据了,目前队列有2个数据 线程Thread-2 准备取数据了 线程Thread-2 已经取完数
阅读全文
java 5线程中 Semaphore信号灯,CyclicBarrier类,CountDownLatch计数器以及Exchanger类使用
摘要:先来讲解一下Semaphore信号灯的作用: 可以维护当前访问自身的线程个数,并提供了同步机制, 使用semaphore可以控制同时访问资源的线程个数 例如,实现一个文件允许的并发访问数。 请看下面的演示代码: 执行结果如下: 线程 pool-1-thread-2 进入 ,当前已有 2 个并发 线程
阅读全文
java中使用ReentrantLock锁中的Condition实现三个线程之间通信,交替输出信息
摘要:本文直接附上源代码,如下是自己写的一个例子 面试题需求: 使用Condition来实现 三个线程 线程1 线程2 线程3 三个交替输出 【按照 线程1(main)-->线程2-->线程3】如此往复50次 请写出程序 输出结果可以自己尝试输出,指定到一个输出文件中,便于查看。
阅读全文
Java 线程锁机制 -Synchronized Lock 互斥锁 读写锁
摘要:(1)synchronized 是互斥锁; (2)ReentrantLock 顾名思义 :可重入锁 (3)ReadWriteLock :读写锁 读写锁特点: a)多个读者可以同时进行读b)写者必须互斥(只允许一个写者写,也不能读者写者同时进行)c)写者优先于读者(一旦有写者,则后续读者必须等待,唤醒
阅读全文
Java终结方法的使用(终结守卫者)
摘要:终结方法finalize()通常是不可预测的,也是很危险的,一般情况下是不必要的。 Java语言规范并不保证finalize()会被及时执行,即不确定终结方法执行时间,只规定在对象被垃圾回收之前执行 不应该依赖终结方法来改变重要的持久状态 终结方法会造成严重的性能损耗 正确使用终结方法 防止用户使用
阅读全文
JVM学习之GC常用算法
摘要:GC策略解决了哪些问题? 既然是要进行自动GC,那必然会有相应的策略,而这些策略解决了哪些问题呢,粗略的来说,主要有以下几点。 1、哪些对象可以被回收。 2、何时回收这些对象。 3、采用什么样的方式回收。 GC策略采用的何种算法 有关上面所提到的三个问题,其实最主要的一个问题就是第一个,也就是哪些对
阅读全文