NIO和BIO最大的区别就是只需要开启一个线程就可以处理来自多个客户端的IO事件。 BIO:同步阻塞式IO,服务器实现模式为一个连接建立一个线程,即客户端有连接请求时,服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情,会造成不必要的线程开销,可以通过线程池机制改善 BIO原理:单线程:同 ...
分类:
其他好文 时间:
2020-02-17 14:16:14
阅读次数:
76
前提 最近在看JUC线程池 的源码实现,其中了解到 的实现原理。从目前 的实现来看,虽然实现了异步提交任务,但是任务结果的获取过程需要主动调用 或者 ,而前者是阻塞的,后者在异步任务执行时间不确定的情况下有可能需要进行轮询,这两种情况和异步调用的初衷有点相违背。于是笔者想结合目前了解到的 实现原理的 ...
分类:
编程语言 时间:
2020-02-17 00:37:33
阅读次数:
73
Hystrix的一些概念 Hystrix是一个容错框架,可以有效停止服务依赖出故障造成的级联故障。 和eureka、ribbon、feign一样,也是Netflix家的开源框架,已被SpringCloud集成。 线程隔离 将每个请求都包装为一个线程,放到线程池中,对这些请求的处理(线程)互不干扰,隔 ...
分类:
编程语言 时间:
2020-02-16 21:02:50
阅读次数:
107
当队满时,(tail+1)%n=head。 public class CircularQueue { // 数组:items,数组大小:n private String[] items; private int n = 0; // head表示队头下标,tail表示队尾下标 private int ...
分类:
编程语言 时间:
2020-02-16 13:04:23
阅读次数:
77
线程池 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。 我们详细的解释一下为什么要使用线程池? 线程池主要用来解决线程生命周期开销问题和资源不足问题。通过对多个任务重复使用线程,线程创建的开销就被分摊到了多个任务上了 , ...
分类:
编程语言 时间:
2020-02-15 15:56:02
阅读次数:
72
线程池 是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源 目的:节省资源 通常,线程池都是通过线程池工厂创建,再调用线程池中的方法获取线程,再通过线程去执行任务方法。 使用线程池方式--Runnable接口 使用线程池中线程对象的步骤: ...
分类:
编程语言 时间:
2020-02-15 15:37:09
阅读次数:
88
Hadoop生态架构技术 1、语言基础 Java:掌握javase知识,多理解和实践在Java虚拟机的内存管理、以及多线程、线程池、设计模式、并行化就可以,不需要深入掌握。 Linux:系统安装(命令行界面和图形界面)、基本命令、网络配置、Vim编辑器、进程管理、Shell脚本、虚拟机的菜单熟悉等等 ...
分类:
其他好文 时间:
2020-02-15 00:16:06
阅读次数:
86
服务端: 启动后,等待客户端发来信息,收到信息后进行处理,返回结果。 客户端: 主线程中发起一次RPC,那么就将信息封装成一个任务,提交到线程池,阻塞等待结果。 线程池中工作线程执行任务,发送信息,等待netty线程收到结果、唤醒自己。 工作线程完成任务,返回结果 所以,一条消息应该包括要调用的类, ...
分类:
其他好文 时间:
2020-02-12 13:04:44
阅读次数:
69
1. 继承Thread类,重写run方法 2. 实现Runnable接口,重写run方法,实现Runnable接口的实现类的实例对象作为Thread构造函数的target 3. 通过Callable和FutureTask创建线程 4. 通过线程池创建线程 前面两种可以归结为一类:无返回值,原因很简单 ...
分类:
系统相关 时间:
2020-02-11 00:32:07
阅读次数:
82
ThreadPoolExecutor 创建和管理线程池,减少内存消耗,提高执行效率。 任务执行过程 1.当线程数小于核心线程数时,创建线程; 2.当线程数大于等于核心线程数,且任务队列未满时,将任务放入任务队列; 3.当线程数大于等于核心线程数,且任务队列已满: 若线程数小于最大线程数,创建线程 若 ...
分类:
编程语言 时间:
2020-02-11 00:06:53
阅读次数:
76