摘要: 前面一篇文章《wait、notify应用场景(生产者-消费者模式)》是一种生产者消费者模式实现,今晚这是Lock方式实现,下面是源码: 生产者代码: 消费者代码: 测试代码: ReentrantLock 公平锁和非公平锁 非公平锁:获取锁的方式是抢占式的,随机的。默认ReentrantLock()是 阅读全文
posted @ 2018-12-19 22:45 monkjavaer 阅读(897) 评论(0) 推荐(0) 编辑
摘要: 一、ReentrantLock (1)、java.util.concurrent.locks包中的ReentrantLock就是重入锁,它实现了Lock接口,Lock加锁和解锁都是显示的。ReentrantLock重入锁可以实现synchronized关键字的功能。主要方法:lock:获得锁。unl 阅读全文
posted @ 2018-12-18 22:46 monkjavaer 阅读(641) 评论(0) 推荐(0) 编辑
摘要: join()的作用:Waits for this thread to die.等待线程对象销毁。在Thread源码中可以看到join源码是使用了wait()方法来实现等待功能。 因为join()内部使用了wait()方法实现,wait方法被调用后线程会释放锁,因此join方法也具有释放锁的特点。 这 阅读全文
posted @ 2018-12-15 16:52 monkjavaer 阅读(557) 评论(0) 推荐(0) 编辑
摘要: Java实现生产者消费者的方式有:wait && notify、BlockingQueue、Lock && Condition等 wait、notify注意事项:(1)可以使用wait()和notify()方法在Java中实现线程间通信。不只是一个或两个线程,而是多个线程可以使用这些方法相互通信。( 阅读全文
posted @ 2018-12-15 16:12 monkjavaer 阅读(4226) 评论(0) 推荐(0) 编辑
摘要: POI 兴趣点(英语:point of interest,通常缩写成POI)乃是电子地图上的某个地标、景点,用以标示出该地所代表的政府部门、各行各业之商业机构(加油站、百货公司、超市、餐厅、酒店、便利商店、医院等)、旅游景点(公园、公共厕所等)、古迹名胜、交通设施(各式车站、停车场、超速照相机、速限 阅读全文
posted @ 2018-12-15 10:11 monkjavaer 阅读(257) 评论(0) 推荐(0) 编辑
摘要: wait/notify机制 实现多个线程之间的通信可以使用wait、notify、notifyAll三个方法。这三个方法都是Object类的方法。wait():导致当前线程等待,直到另一个线程调用此对象的 notify()方法或 notifyAll()方法。wait(long timeout):导致 阅读全文
posted @ 2018-12-13 22:38 monkjavaer 阅读(291) 评论(0) 推荐(0) 编辑
摘要: Java中自增自减操作不具原子性,在多线程环境下是线程不安全的,可以使用使用AtomicInteger原子类代替i++,i--操作完成多线程线程安全操作。 下面是等于i++多线程的自增操作代码: incrementAndGet()方法源码(JDK1.8): 阅读全文
posted @ 2018-12-12 22:29 monkjavaer 阅读(558) 评论(0) 推荐(0) 编辑
摘要: Java内存模型是围绕在并发过程中如何处理原子性、可见性、有序性来建立的。 一、主内存与工作内存 Java内存模型主要目标是在虚拟机中将变量存储到内存和从内存中取出变量。这里的变量包括:实例字段、静态字段、构成数组对象的元素;不包括局部变量和方法参数,因为它们是线程私有的。Java内存模型规定了所有 阅读全文
posted @ 2018-12-05 21:09 monkjavaer 阅读(220) 评论(0) 推荐(0) 编辑
摘要: Java虚拟机在执行java程序时会把内存划分为以下几个不同的数据区域: java虚拟机内存划分(运行时)1、线程私有的: 程序计数器(Program Counter Register):可以看作当前线程所执行的字节码的行号指示器。java多线程中一个时刻,一个处理器都只会执行一条线程中的指令,在线 阅读全文
posted @ 2018-12-03 21:03 monkjavaer 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 一.synchronized java并发编程中存在“非线程安全"问题。“非线程安全"是指发生在多个线程对同一个对象中的实例变量并发访问时,产生的”脏读“现象,使用synchronized同步处理可解决这一问题。非线程安全问题存在于实例变量中,不存在方法内部的私有变量。 1、synchronized 阅读全文
posted @ 2018-11-26 23:23 monkjavaer 阅读(573) 评论(0) 推荐(0) 编辑