摘要: 获取锁定 void lock():常用获取锁定的方法 void lockInterruptibly():如果当前线程未被中断,则获取锁定;如果当前线程被中断,则出现异常 boolean tryLock():调用时锁定未被另一个线程持有的情况下,才会获取该锁定 boolean tryLock(long 阅读全文
posted @ 2018-10-10 12:50 *青锋* 阅读(404) 评论(0) 推荐(0) 编辑
摘要: Lock锁分为公平锁和非公平锁两种 公平锁:线程获取锁的顺序是按照线程加锁的顺序来分配的,即先来先得的FIFO先进先出顺序 非公平锁:一种获取锁的抢占机制,是随机获取锁的,和公平锁的区别就是先来的不一定先得到锁,导致某些线程可能一直拿不到锁,所以是不公平的 公平锁,就是很公平,在并发环境中,每个线程 阅读全文
posted @ 2018-10-09 16:34 *青锋* 阅读(1490) 评论(0) 推荐(0) 编辑
摘要: Condition类有很好的灵活性,可以实现多路通知功能,一个Lock对象中可以创建多个Condition对象实例,线程对象可以注册在指定的Condition中,进而有选择的进行线程通知,在调度线程上更加灵活 wait与notify/notifyAll进行等待通知时,被通知的线程是随机的,但是Con 阅读全文
posted @ 2018-09-26 17:23 *青锋* 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 场景描述: 项目中通过java代码中从数据库中查询一系列数据,对数据做相应处理,然后通过字符流将数据写如一个新生成的文件中,将该项目部署在linux服务器上,最后生成的文件拿到本地使用notepad++打开会在部分数据末尾出现NUL 排查原因: NUL在C语言中是一个特殊字符常量'\0',空字符 在 阅读全文
posted @ 2018-09-25 17:41 *青锋* 阅读(2385) 评论(0) 推荐(1) 编辑
摘要: 实现变量值的共享,可以使用public static变量的形式,这种形式修饰的变量在所有使用该变量的线程间都是共享的 使用ThreadLocal也可以实现变量值的共享,这种共享旨在实现每个线程自己的变量共享 threadLocal对象在第一次调用get()方法时返回null,然后通过调用set()方 阅读全文
posted @ 2018-09-21 10:56 *青锋* 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 测试案例 测试类 打印结果 结果是0,并没有被修改成10,说明main线程在thread线程之前执行完成了 如何获取修改后的count值?使用join方法 测试类 打印结果 原因分析 join源码 join方法使得当前线程进入阻塞状态,进入排队队列的作用,且必须等待调用join的线程对象执行完run 阅读全文
posted @ 2018-09-20 17:26 *青锋* 阅读(138) 评论(0) 推荐(0) 编辑
摘要: join(long)方法的源代码 sleep(long)方法的源代码 1 public static native void sleep(long millis) throws InterruptedException; 从源代码中可以发现,join(long)方法内部使用wait(long)实现, 阅读全文
posted @ 2018-09-20 15:46 *青锋* 阅读(546) 评论(0) 推荐(0) 编辑
摘要: 管道流主要用于在不同线程间直接传送数据 一个线程发送数据到输出管道,另一个线程从输入管道中读取数据,进而实现不同线程间的通信 字节管道流 字节流 线程类 测试类 打印输出 线程threadR先被启动,但是因为管道流中并没有数据,所以线程会阻塞在in.read(bytes)这里,直到有数据被写入,才会 阅读全文
posted @ 2018-09-20 10:39 *青锋* 阅读(558) 评论(0) 推荐(0) 编辑
摘要: 参考书籍《java多线程编程核心技术》 都是基于wait/notify实现的 一个生产者和一个消费者:操作值 线程类 测试运行 打印输出 如果以此为基础,设计多个生产者和多个消费者,那么运行过程中很可能会发生假死的情况,也就是所有线程都呈现等待的状态 多个生产者与多个消费者:操作值 修改Produc 阅读全文
posted @ 2018-09-18 17:45 *青锋* 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 执行wait方法会释放锁,执行notify不会释放锁 线程类 测试运行 控制台输出结果 证明了wait方法执行后会释放锁 线程类 测试运行 打印结果 证明了notify方法执行后并不会释放锁 阅读全文
posted @ 2018-09-18 14:30 *青锋* 阅读(197) 评论(0) 推荐(0) 编辑