多线程
文章平均质量分 95
追逐消失的记忆
这个作者很懒,什么都没留下…
展开
-
Netty 通信原理
本文主要从 网络通讯原理中的select 和 epoll 系统调用入手,来打开 Netty 的大门,从认识 Netty 的基础原理 —— I/O 多路复用模型开始Netty 底层的通信机制是基于I/O多路复用模型构建的,简单一句话概括就是多路网络连接可以复用一个I/O线程,在 Java 层面也就是封装了其 NIO API,但是 JDK 底层基于 Linux 的 epoll 机制实现(其实是三个函数)。注意在老旧的 Linux 上,可能还是 select,没考证过,但是时下主流版本,肯定早就是 epoll原创 2022-02-14 16:25:34 · 1019 阅读 · 0 评论 -
java.util.concurrent 包 的LinkedBlockingQueue学习
LinkedBlockingQueue是一个用于并发环境下的阻塞队列集合类,它可以用于生产-消费者模型。阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。阻塞队列提供了四种处理方法:方法\处理方式 抛出异常原创 2020-09-10 16:48:58 · 997 阅读 · 0 评论 -
Thread的run()与start()的区别
1、start()、run()方法的定义区分start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,然后通过此Thread类调用方法run()来完成其运行操作的,这里方法run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程终止。然后CPU再调度其它线程。 一旦得到cpu时间片,就开始执行r...原创 2020-09-07 17:47:19 · 8255 阅读 · 0 评论 -
多线程与线程池
一、java中线程的创建JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现1、通过继承Thread实现对多线程的创建public class MyThread extends Thread { public void run() { System.out.println("M...原创 2019-03-13 21:03:53 · 146 阅读 · 0 评论 -
ThreadPoolExecutor线程池源码
一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数 核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理 设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭 queueCapacity:任务队列容量(阻塞队列) 当核心线程数达...原创 2019-07-09 14:46:09 · 259 阅读 · 0 评论 -
Java并发包源码分析
并发是一种能并行运行多个程序或并行运行一个程序中多个部分的能力。如果程序中一个耗时的任务能以异步或并行的方式运行,那么整个程序的吞吐量和可交互性将大大改善。现代的PC都有多个CPU或一个CPU中有多个核,是否能合理运用多核的能力将成为一个大规模应用程序的关键。 Java基础部分知识总结点击Java并发基础总结。Java多线程相关类的实现都在Java的并发包concurrent,concurr...转载 2019-07-11 14:06:02 · 128 阅读 · 0 评论 -
高并发设计思想之Future模式
并行程序设计模式并行设计模式是设计优化的一部分,在大型 JAVA企业级应用中,对常用的多线程结构的总结和抽象。与串行程序相比,并行程序的结构通常更为复杂。合理地使用并行模式在多线程开发中,对应用的底层架构代码搭建有着牢固地基的作用。把公开课的内容整理了一下,希望对大家有帮助。先来思考两个问题,也许在面试中你会被问到。问题一:你在实际开发中遇到并行设计问题吗?问题二:如果遇到,你是如何在...转载 2019-08-28 09:58:49 · 422 阅读 · 0 评论