随笔分类 -  技术

摘要:Java组合异步编程(2)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 多数码农在开发的时候,要么处理同步应用,要么处理异步。但是如果能学会使用CompletableFuture,就会具备一种神奇的能力:将同步变为异步(有点像用了月光宝盒后同时穿梭在好几个时空的感觉)。怎么做呢?来看看代码。 新增一个商店类Shop 阅读全文
posted @ 2022-11-11 07:36 湘王 阅读(109) 评论(0) 推荐(0) 编辑
摘要:Java组合异步编程(1)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 在《计算机干活的两种方式》中我们提到过同步和异步的区别。所谓同步就是事情只能一件接一件地顺着干,而不能跳过。比如外卖小哥送外卖只能一件一件地送,不能说一件先送一半再送另一件。而异步就可以不按顺序出牌,但是这种不按顺序需要以互不影响为前提。比如李 阅读全文
posted @ 2022-11-10 07:36 湘王 阅读(57) 评论(0) 推荐(0) 编辑
摘要:Java函数式编程(1):Lambda表达式(2)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 从之前的Lambda表达式的演变过程可以知道,Lambda表达式其实是一个对匿名内部类的简化过程:去掉了多余的语法修饰,只保留最最核心的部分。在Java中类似这种使用匿名内部类写代码的场景非常多,比如Runnable接口,就是典型的最好使用La 阅读全文
posted @ 2022-11-04 06:45 湘王 阅读(118) 评论(0) 推荐(1) 编辑
摘要:Java函数式编程(1):Lambda表达式(1)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ Java在其技术发展周期中经历过几次比较重要的变化,如果不是这几次比较重要的变化,恐怕不会有现在这样的江湖地位。个人看来,至少有两次,一是2010~2011年兴起的移动应用开发,Android的出现,让Java狠狠地出了次风头。再就是2014年 阅读全文
posted @ 2022-11-03 06:50 湘王 阅读(61) 评论(0) 推荐(0) 编辑
摘要:Java多线程(7):JUC(下)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 除了四种常见的同步器(发令枪、摇号器、栅栏和交换机),JUC还有所谓线程安全的容器、阻塞队列和一些特殊的类。其中常出现的就是线程安全的容器和阻塞队列。与其说这是两个大的分类,还不如说它就是两个用得最多的类:ConcurrentHashMap和A 阅读全文
posted @ 2022-11-02 06:48 湘王 阅读(107) 评论(0) 推荐(1) 编辑
摘要:Java多线程(7):JUC(上)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 前面把线程相关的生命周期、关键字、线程池(ThreadPool)、ThreadLocal、CAS、锁和AQS都讲完了,现在就剩下怎么来用多线程了。而要想用好多线程,其实是可以取一些巧的,比如JUC(好多面试官喜欢问的JUC,就是现在要讲的JUC 阅读全文
posted @ 2022-11-01 06:40 湘王 阅读(382) 评论(2) 推荐(1) 编辑
摘要:Java多线程(6):锁与AQS(下)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 之前说过,AQS(抽象队列同步器)是Java锁机制的底层实现。既然它这么优秀,是骡子是马,就拉出来溜溜吧。 首先用重入锁来实现简单的累加,就像这样: /** * 用重入锁实现累加 * * @author 湘王 */ public class M 阅读全文
posted @ 2022-10-31 06:47 湘王 阅读(345) 评论(0) 推荐(1) 编辑
摘要:Java多线程(6):锁与AQS(中)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ Java中的AQS(AbstractQueuedSynchronizer,抽象队列同步器)是用来实现锁及其他同步功能组件的Java底层技术基础,java.util.concurrent包下大部分类的实现都离不开它。 通过继承AQS: 1、Ree 阅读全文
posted @ 2022-10-30 08:36 湘王 阅读(153) 评论(0) 推荐(0) 编辑
摘要:Java多线程(6):锁与AQS(上)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 在Java面试中,有一类高频问题会经常问到(火箭式问题):Java有几种锁?都是干嘛的?我想对于面试经验较为丰富的人,这个问题极有可能遇到过。不过我估计除了「死锁」大部分人都听过以外,其他的什么锁可能就不是那么清楚了。实际上,Java总共有6大 阅读全文
posted @ 2022-10-29 09:39 湘王 阅读(100) 评论(0) 推荐(0) 编辑
摘要:Java多线程(5):CAS您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 在JDK1.5之前,Java的多线程都是靠synchronized来保证同步的,这会引起很多性能问题,例如死锁。但随着Java的不断完善,JNI(Java Native Interface)使得Java能越过JVM直接调用本地方法,例如CAS。 阅读全文
posted @ 2022-10-28 06:47 湘王 阅读(457) 评论(0) 推荐(2) 编辑
摘要:Java多线程(4):ThreadLocal您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 为了提高CPU的利用率,工程师们创造了多线程。但是线程们说:要有光!(为了减少线程创建(T1启动)和销毁(T3切换)的时间),于是工程师们又接着创造了线程池ThreadPool。就这样就可以了吗?——不,工程师们并不满足于此,他们不把自己创造出 阅读全文
posted @ 2022-10-27 06:44 湘王 阅读(488) 评论(0) 推荐(1) 编辑
摘要:Java多线程(3):ThreadPool(下)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 除了可以通过ThreadPoolExecutor自定义线程池外,同Stream API中的Collectors一样,多线程里的Executors类也提供了一组相关的线程池工具,可以直接拿来用,不用考虑用什么队列合适的问题。 Javac除了传统的 阅读全文
posted @ 2022-10-26 06:42 湘王 阅读(109) 评论(0) 推荐(0) 编辑
摘要:Java多线程(3):ThreadPool(中)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 线程池是个神器,用得好会非常地方便。本来觉得线程池的构造器有些复杂,即使讲清楚了对今后的用处可能也不太大,因为有一些Java定义好的线程池可以直接使用。但是(凡事总有个但是),还是觉得讲一讲可能跟有助于理解后面的常用线程池,所以该打脸还是打吧- 阅读全文
posted @ 2022-10-25 06:43 湘王 阅读(63) 评论(0) 推荐(0) 编辑
摘要:Java多线程(3):ThreadPool(上)您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 开完一趟车完整的过程是启动、行驶和停车,但老司机都知道,真正费油的不是行驶,而是长时间的怠速、频繁地踩刹车等动作。因为在速度切换的过程中,发送机要多做一些工作,当然就要多费一些油。 而一个Java线程完整的生命周期就包括: 1、T1:创建(启动 阅读全文
posted @ 2022-10-24 06:39 湘王 阅读(109) 评论(0) 推荐(0) 编辑
摘要:Java多线程(2):线程关键字您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ Java中和线程相关的关键字就两:volatile和synchronized。 volatile以前用得较少,以后会用得更少(后面解释)。它是一种非常轻量级的同步机制,它的三大特性是: 1、保证可见性,即强制将CPU高速缓存的数据立即写入主存, 阅读全文
posted @ 2022-10-23 08:14 湘王 阅读(102) 评论(0) 推荐(0) 编辑
摘要:Java多线程(1):线程生命周期您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 从事Java开发这些年来,如果要问我Java当中最难的部分是什么?最有意思的部分是什么?最多人讨论的部分是什么?那我会毫不犹豫地说:多线程。 之前说过I/O是比较裹人概念之二,那么多线程就是那个之一,除了它也没谁了!如果一定要找另外一个特性,那 阅读全文
posted @ 2022-10-22 07:44 湘王 阅读(86) 评论(0) 推荐(1) 编辑
摘要:Java I/O(4):AIO和NIO中的Selector您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 在Java NIO的三大核心中,除了Channel和Buffer,剩下的就是Selector了。有的地方叫它选择器,也有叫多路复用器的(比如Netty)。 之前提过,数据总是从Channel读取到Buffer,或者从Buffer写入到Chann 阅读全文
posted @ 2022-10-21 09:40 湘王 阅读(331) 评论(0) 推荐(1) 编辑
摘要:Java I/O(3):NIO中的Buffer您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 之前在调用Channel的代码中,使用了一个名叫ByteBuffer类,它是Buffer的子类。这个叫Buffer的类是专门用来解决高速设备与低速设备之间速度不匹配的问题的,也可以减少数据库的读写次数。 它又分为输入缓冲区和输出缓冲区。 很多初 阅读全文
posted @ 2022-10-20 09:28 湘王 阅读(410) 评论(0) 推荐(0) 编辑
摘要:Java I/O(2):NIO中的Channel您好,我是湘王,这是我的博客园,欢迎您来,欢迎您再来~ 为了解决标准Java I/O令人难以忍受的效率问题,从JDK1.4开始,NIO出现了(Non-blocking I/O,官方称之为New I/O)。NIO不但新增加了许多全新的类,而且还对原来的很多类进行了改写。之所以是NIO,是因为使用它的场 阅读全文
posted @ 2022-10-19 00:53 湘王 阅读(85) 评论(0) 推荐(0) 编辑
摘要:Java I/O(1):模型与流在1990年以前,有一帮工程师们认为未来(1990年以后)会有很多小型设备需要得到电脑操控(不得不说,想法非常超前),鉴于当时市面上并没有任何一款编程语言能够跨平台,而且能够在诸如烤面包机这种小型设备上运转,所以他们决定自己创造一个,玩一把大的。 于是Java诞生了。 为了兼顾设备之间的文件处理,J 阅读全文
posted @ 2022-10-18 07:32 湘王 阅读(331) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示