【并发】并发

2023-11-11

并发

  • 进程和线程
    • 进程:资源分配的基本单位。可以理解为在内存中运行的程序。每个进程都有独立的内存空间,一个进程包含多个线程
    • 线程:任务执行的基本单位。负责进程中任务的执行。每个线程共享进程的内存空间,一个线程使用时,其他线程必须等待。
    • 用户 (User) 线程:运行在前台,执行具体的任务,如程序的主线程、连接网络的子线程等都是用户线程。
    • 守护 (Daemon) 线程:运行在后台,为其他前台线程服务。也可以说守护线程是 JVM 中用户线程的 “佣人”。一旦所有用户线程都结束运行,守护线程会随 JVM 一起结束工作。守护线程拥有自动结束自己生命周期的特性。如垃圾回收线程,程序或JVM退出时,垃圾回收线程能够自动关闭。
  • 线程实现方式
    1. 继承Thread类
      • 继承Thread类
      • 重写核心执行逻辑run方法
      • 调用start方法开启线程。调用run方法只是一个普通方法
    2. 实现Runnable接口【因为Java是单继承的,所以一般选择Runnable创建线程】
      • 实现Runnable接口
      • 重写run方法
      • 创建Thread对象,构造参数为当前Runnable实现类的对象
      • 调用start开启线程
    3. 实现Callable接口【需要返回值时,选择Callable创建线程】
      • 实现Callable接口
      • 重写call()方法,有返回值,返回类型就是Callable接口中泛型对应的类型
      • 创建FutureTask对象,构造参数为当前Callable接口的实现类对象
      • 将FutureTask作为参数创建Thread对象
      • 调用start开启线程
      • futureTask.get获取call方法返回值
    4. 线程池
      • 为什么使用线程池

        • 使用线程池可以复用池中的线程,不需要每次都创建新线程,减少创建和销毁线程的开销;
        • 同时,线程池具有队列缓冲策略、拒绝机制,并能动态管理线程个数,特定的线程池还具有定时执行、周期执行功能
      • Executors类创建线程池【不用】

        1. FixedThreadPool(固定线程数量)和SingleThreadPool(单例线程池):

          允许的请求队列长度为Integer.MAX_VALUE,可能会堆积大量的请求,从而导致OOM。

        2. CachedThreadPool(缓存线程池)和ScheduledThreadPool(定时周期性线程池):

          允许的创建线程数量为Integer.MAX_VALUE,可能会创建大量的线程,从而导致OOM。

      • ThreadPoolExecutor创建线程池
        • 主要参数
          • corePoolSize(int):核心线程数量
          • workQueue:阻塞队列,存放等待执行的任务,使用时指定大小
          • maximumPoolSize(int):线程池内的最大线程数量
          • keepAliveTime(long):线程存活时间
          • TimeUnit unit:线程存活时间的单位
          • [RejectedExecutionHandlerxedThreadPool(固定线程数量)和Sigln./xiewenfeng520/article/details/106954167/):拒绝策略,当任务队列存满并且线程池个数达到maximunPoolSize后采取的策略
          • threadFactory:创建线程的工厂
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【并发】并发 的相关文章

随机推荐

  • 公办幼儿园教师要涨工资了???

    终于盼到这一天了 已在市区公办园上班3年多却一直没有编制的季馨 听说从明年开始要涨工资了 高兴坏了 记者从日前召开的全市学前教育工作会议上获悉 从2012年起 确保市区公办幼儿园中具有国家教师资格的聘用教师最低工资水平不得低于当地最低工资标
  • 蓝桥杯 问题 1083: Hello, world!(C/C++ vector实现)

    问题 1083 Hello world 时间限制 1Sec 内存限制 64MB 提交 944 解决 476 题目描述 This is the first problem for test Since all we know the ASCI
  • 《一周搞定模电》—功率放大器

    系列文章目录 文章目录 系列文章目录 前言 一 功率放大电路三极管的工作模式 二 功率放大器内部结构 前言 功率放大器指一种以输出较大功率为目的的放大电路 特点 输出电压大 输出电流大 放大电路的输出电阻与负载匹配 电压放大器和功率放大器的
  • 三子棋创作(c语言)

    我们写三子棋之前首先要思考一下三子棋的实现逻辑 一 1 游戏菜单 是选择开始游戏还是结束游戏 2 打印一个棋盘出来 并且进行棋盘的初始化 即没有旗子的棋盘 3 玩家下棋 用 表示 4 电脑下棋 用 表示 5 判断胜负 电脑和玩家下完棋之后
  • java使用lambda表达式对List集合进行操作(Java8)

    import java util ArrayList import java util List import java util function Predicate import java util stream Collectors
  • token会被截取吗_OAuth2 为什么要用 code 换 token

    先简单介绍下 OAuth2 再用一个例子说明下为什么要用 code 换 token OAuth2 简单介绍 4 个角色 resource owner 可以授权访问被保护资源的实体 如果是人的话 即是最终用户 resource server
  • h2数据库优缺点

    h2数据库是嵌入式的内存型数据库 也可以存储在磁盘上 效率比通过socket调用的redis执行的要快 纯java编写就一个jar h2数据库的缺点是不适合大数据量高并发的操作
  • centos 安装防火墙,并开启对应端口号

    1 查看防火墙状态 命令 systemctl status firewalld service 开启防火墙时 提示没有安装防火墙 root localhost systemctl start firewalld service Failed
  • 关于锁的面试题

    1 synchronized和ReentranctLock有什么区别 底层实现 synchronized是jvm层面的锁 通过monitor对象完成 对象只能在同步代码块和同步方法中调用wait notify方法 ReentranctLoc
  • Java多线程——线程的sleep方法、中断线程的睡眠

    一 关于Sleep方法的应用 public static void sleep long millis throws InterruptedException 让当前正在执行的线程进入休眠 暂时停止执行 指定的毫秒数 静态方法 Thread
  • 数字媒体技术专业方向

    现在是大三下 这篇文章是大一时 整理知乎青岛大学 某学姐的高赞回答 咱这个专业 你可以根据你的学校进行选择 学校好 按部就班的学 以下几个方向都走得通 学校不好 很普通 那么大概率也不学了什么 普通本科院校的学风啊 教学质量啊 与其都学个皮
  • C++11/14/17中提供的mutex系列区别

    C 11 14 17中提供的mutex系列类型如下 互斥量 C 版本 作用 mutex C 11 基本的互斥量 timed mutex C 11 timed mutex带超时功能 在规定的等待时间内 没有获取锁 线程不会一直阻塞 代码会继续
  • 监听小程序切换到后台

    注意要写在app js里面 onHide wx onAppHide
  • 图像处理学习笔记(三):基于匹配的目标识别

    Matlab图像处理学习笔记 三 基于匹配的目标识别 如果要在一幅图像中寻找已知物体 最常用且最简单的方法之一就是匹配 在目标识别的方法中 匹配属于基于决策理论方法的识别 匹配方法可以是最小距离分类器 相关匹配 本文code是基于最小距离分
  • 三进制计算机_数学糖果S10:N进制

    不同进制各有各的特点 二进制更为基础 十进制匹配人体手指数量 十二进制之基数12所含因数多 十六进制之基数16易被多次二分 六十进制结合了五进制与十二进制 世界可能是由概率控制的 现实世界中十进制被选中 计算机世界中二进制被选中 N 进 制
  • PyTorch: 训练分类CIFAR10

    usr bin env python coding utf 8 Author zengxiaohui Datatime 8 13 2021 11 20 AM File train cifar10 import os import torch
  • 数据结构进阶篇,回文字符串专题

    5 最长回文子串 题目 给你一个字符串 s 找到 s 中最长的回文子串 示例 输入 s babad 输出 bab 解题思路 首先 判断一个字符串是否为回文字符串 可以采用 双指针 的方式来处理 需要消耗 O n 的时间复杂度 如果使用首尾向
  • 电商项目之响应编码的枚举类 和 通用的响应对象 和 常量类

    x响应编码的枚举类 public enum ResponseCode SUCCESS 0 SUCCESS ERROR 1 ERROR ILLEGAL AGRUMENT 2 ILLEGAL AGRUMENT NEED LOGIN 10 NEE
  • 2.0 Jlink使用技巧之读取STM32内部的程序

    在实际运用过程中 有时候某台机器有故障 另一台可以正常运行 为了临时救急 我们可以把没问题的机器代码从flash拷贝出来 烧录到故障机 那么如何拷贝flash内部代码呢 步骤1 安装jlink 安装好J link 没安装的 网上自行搜索该软
  • 【并发】并发

    并发 进程和线程 进程 资源分配的基本单位 可以理解为在内存中运行的程序 每个进程都有独立的内存空间 一个进程包含多个线程 线程 任务执行的基本单位 负责进程中任务的执行 每个线程共享进程的内存空间 一个线程使用时 其他线程必须等待 用户