摘要:
什么是nettty netty是基于javaNio模型的网络编程框架。很多框架底层也是用netty实现的 比如dubbo 与NIO的区别 1.简化了API的使用。基于事件驱动。只需要在对应的事件写相应的业务就行了。 2.上层封装多种协议的实现 webSoket,http。同时修复了NIO的bug(内 阅读全文
摘要:
运行这段代码会抛出 的异常, 查看Arrays.as源码 new ArrayList是创建的内部的ArrayList 而不是java.util.Arrays包下的ArrayList 查找发现 内部的ArrayList并没有add方法 点击父类查看 父类实现的 add remove等修改集合元素的方法 阅读全文
摘要:
项目中突然报空指针异常 排查发现三元运算符空指针异常,表面上看不出来有什么问题,编译器编译的时候会保证:2边数据类型一致如: 会编译不通过。因为String 和int不是一个类型 这一切的原因都是编译器自动拆箱造成的。如下情况 价格是否为null判断就好了 阅读全文
摘要:
IO 服务端ServerSocket 客户端Socket 缺点每次客户端建立连接都会另外启一个线程处理。读取和发送数据都是阻塞式的。 如果1000个客户端建立连接将会产生1000个线程 测试类 输出 Nio nio改善了io一个客户端建立连接就创建一个线程监听请求的模型。 nio的核心概念 1.Ch 阅读全文
摘要:
ReentrantLock源码 https://www.cnblogs.com/LQBlog/p/15206866.html 简单demo 在多线程操作时。保证一块共享资源的原子性。第一想到的就是用synchronized关键字 在jdk5提供一个更灵活更强大的 ReentrantLock 使用re 阅读全文
摘要:
限制并发资源的并发访问数量。 samephore.acquire(); 获取许可 samephore.release(); 释放一个许可。 模拟银行10个办理任务的窗口。 samephore.acquire() 如果有10个任务获取许可并没有释放 其他人等待 某一个获取许可正在执行的任务 释放许可才 阅读全文
摘要:
应用场景 财务成本核算。可能会有多个耗时的步骤。如果顺序执行是非常慢的。再相互数据获取数据不依赖的情况下可以使用Future并行执行 自己实现future异步加载 调用getData 方法如果没有setData 则state是false 则释放锁 加入到等待队列 当你get方法线程加载完数据再set 阅读全文
摘要:
CountDownLatch CountDownLatch是jdk5 java.util.concurrent新增的的工具类 使用场景。如:导出excel需要解析创建多个sheel。创建多线程并行执行。执行完毕 相应给客户端 public static void main(String[] args 阅读全文
摘要:
线程池的好处 降低资源消耗。虽然我们程序员创建一个线程很容易,直接使用 new Thread() 创建就可以了,但是操作系统做的工作会多很多,它需要发出 系统调用,陷入内核,调用内核 API 创建线程,为线程分配资源等,这一些操作有很大的开销,通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 阅读全文
摘要:
非阻塞无界队列 ConcurrentLinkedQueue public static void main(String[] args) throws InterruptedException { ConcurrentLinkedQueue queue=new ConcurrentLinkedQue 阅读全文