Java获取多线程执行结果方式的归纳与总结 后端

Java获取多线程执行结果方式的归纳与总结

在日常的项目开发中,我们会经常遇到通过多线程执行程序并需要返回执行结果的场景,下面我们就对获取多线程返回结果的几种方式进行一下归纳,并进行简要的分析与总结。 一、Thread.join 在一些简单的应用场景中我们可以使用线程本身提供的join方法,我们知道join方法的目的是让一个线程等待另一个线程结束后才能执行,利用此原理我们可以设置一个监控线程用来等待程序线程执行完毕后输出返回结果,下面我...
阅读全文
java开发时各类工具的使用规范 Java

java开发时各类工具的使用规范

工具类规范 一个项目不可能没有工具类,工具类的初衷是良好的,代码重用,但到了后面工具类越来越乱,有些项目工具类有几十个,看的眼花缭乱,还有不少重复。如何编写出好的工具类,我有几点建议: 隐藏实现 就是要定义自己的工具类,尽量不要在业务代码里面直接调用第三方的工具类。这也是解耦的一种体现。如果我们不定义自己的工具类而是直接使用第三方的工具类有2个不好的地方: 不同的...
阅读全文
Spring WebFlux启动源码分析 Java

Spring WebFlux启动源码分析

根据之前的文章 《Spring Boot启动源码分析》可知,当执行 AbstractApplicationContext -> onRefresh() 方法时,如果引入了 webflux 相关依赖,会创建 WebServer。 /** ReactiveWebServerApplicationContext **/ private void createWebServer() { ...
阅读全文
苦苦面试了半年,上个月凭借着这份面试题,我一举拿下了阿里,字节跳动和京东的offer! Spring

苦苦面试了半年,上个月凭借着这份面试题,我一举拿下了阿里,字节跳动和京东的offer!

前言 最近收到很多粉丝的私信,有工作几年的,也有即将面临毕业的学生党。都是来跟我说金九银十马上到了,自己想去冲击面试一波大厂,问我有没有相关的面试题分享。听到后我也是赶紧为大家整理了一份,话不多说满满的干货都在下面了,友情提示,文章篇幅齐全,全是干货慢慢观看!!! Redis 什么是Redis? Redis的数据类型? 使用Redis有哪些好处? Redis相比Memcac...
阅读全文
看了这篇你就会手写RPC框架了 Java

看了这篇你就会手写RPC框架了

一、学习本文你能学到什么? RPC的概念及运作流程 RPC协议及RPC框架的概念 Netty的基本使用 Java序列化及反序列化技术 Zookeeper的基本使用(注册中心) 自定义注解实现特殊业务逻辑 Java的动态代理 自定义Spring Boot Starter 这里只是列出了你能从RPC框架源码中能学到的东西,本文并不会每个知...
阅读全文
2020腾讯,阿里,美团,字节跳动面试真题整理,全网首发!面试突击必备! Java

2020腾讯,阿里,美团,字节跳动面试真题整理,全网首发!面试突击必备!

前言 最近收到很多粉丝的私信,有工作几年的,也有即将面临毕业的学生党。都是来跟我说金九银十马上到了,自己想去冲击面试一波大厂,问我有没有相关的面试题分享。听到后我也是赶紧为大家整理了一份,话不多说满满的干货都在下面了,友情提示,文章篇幅齐全,全是干货慢慢观看!!! Redis 什么是Redis? Redis的数据类型? 使用Redis有哪些好处? Redis相比Memcac...
阅读全文
Disruptor 等待策略引发的 CPU 负载异常问题 Java

Disruptor 等待策略引发的 CPU 负载异常问题

背景 工作中,我负责的系统是一个数据流处理服务 - 以流水线(pipeline)的形式分多级异步处理: 其中的 队列 实际使用的是 Disruptor ,多生产者单消费者模式: ThreadFactory factory = new ThreadFactoryBuilder().setNameFormat(name).setDaemon(true).build(); Di...
阅读全文
JAVA多线程——并发 Java

JAVA多线程——并发

线程状态图: 图来自 Java线程的6种状态及切换(透彻讲解) 初始、就绪、运行、等待、阻塞(synchronized)、终止。 Thread.sleep(millis)一定时间后自动恢复执行, 不释放对象锁 。 Object.wait()直接 释放锁 ,一直等待,知道notify()唤醒。 Thread1.join()表示运行的线程阻塞自己,等待Thr...
阅读全文
集群多JVM分布式锁实现 Java

集群多JVM分布式锁实现

基于数据库表乐观锁 (基本废弃) 要实现分布式锁,最简单的⽅方式可能就是直接创建⼀一张锁表,然后通过操作该表中的数据来实现了了。 当我们要锁住某个⽅法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。 比如创建这样一张数据库表: CREATE TABLE `methodLock` ( `id` int(11) NOT NULL AUTO_INCREMENT C...
阅读全文
从Linux内核理解JAVA的NIO Java

从Linux内核理解JAVA的NIO

IO 可以简单分为 磁盘 IO 和 网络 IO , 磁盘 IO 相对于 网络 IO 速度会快一点,本文主要介绍 磁盘 IO , 网络 IO 下周写。 JAVA 对 NIO 抽象为 Channel , Channel 又可以分为 FileChannel (磁盘 io)和 SocketChannel (网络 io)。 如果你对 IO 的理解只是停留在 api 层面那是远远不够的,一定要了...
阅读全文
Loading...