
Java
Java语言进阶踩坑之谈
光膀走天涯
初生牛犊不怕虎
展开
-
Callable, Future, FutureTask
一. Callable vs Runnable几乎每个Java学习者都知道,如何新建线程?1. 直接继承Thread类2. 实现Runnable接口其实理解很简单,Thread相当于工人(工作主体),Runnable相当于工人工作搬的砖(工作内容)。只使用Runnable有很大的局限性:开发者想要知道run( )方法的调用结果,只能在run( )里面加上日志打印,或者放...原创 2019-07-18 17:56:54 · 162 阅读 · 0 评论 -
闭锁、信号量、栅栏
一.同步工具类同步容器、并发容器可以保证容器内数据被正确访问,但是线程访问流还是不受制约的。同步工具类产生的原因就是协调线程的控制流。某种程度上来说,阻塞队列既是并发容器类,也是同步工具类。阻塞队列对缓存读取、写入的线程操作进行了延时阻塞,也达到了控制线程访问流的目的。但是阻塞队列终究是从容器角度出发,对和容器无关的其他线程流并未做很好的限制。因而同步工具类有了其发挥的余地。常用的同...原创 2019-07-16 14:25:40 · 876 阅读 · 0 评论 -
对象的创建、发布、逸出
对象创建、发布对象的创建,许多新手也都耳熟能详了,例如public class School { private static Person person = new Person();}但是因为private关键字的作用,其他类无法直接访问person对象,所以产生了“发布”对象概念。对象的“发布”指的是“使对象能够在当前作用域之外的代码使用”。改变private关键字就可以达...原创 2019-06-17 17:08:06 · 483 阅读 · 1 评论 -
Java高并发容器类
一、同步容器(线程安全还不够)同步容器保证了装入容器数据访问的线程安全,也就是说无论多少个线程同时调用,都不会破坏容器、容器内数据的安全性。虽然做到了线程安全,容器的复合操作:迭代、跳转、运算仍会带来新问题。因为同步容器保证了容器内数据的安全,可不能保证反馈数据的正确性。因为多线程中的调用者不合时宜的调用,经常会导致调用异常(然而仍然是线程安全,并没有破坏vector)。这就像什么呢,...原创 2019-07-08 18:21:01 · 241 阅读 · 0 评论