Stream流,线程

news2024/12/30 1:22:06

文章目录

  • Stream流
    • 思想
    • 作用
    • 三类方法
      • 获取方法
        • 单列集合(Collection[List,Set
        • 双列集合Map(不能直接获取)
        • 数组
        • 同一类型元素(Stream中的静态方法)
      • 常见的中间方法
      • 终结方法
      • 收集方法
    • Optional类
  • 线程
    • 相关概念
    • 多线程
      • 概念
      • 实现方式
        • 继承Thread类
        • 实现Runnable接口
        • 比较
    • 常用方法
    • 线程安全
      • 产生的原因
      • 解决思想
      • 同步
        • 同步代码块
        • 同步方法
        • Lock锁机制

Stream流

思想

流水线那样工作
Snipaste_2024-04-02_15-41-47.png

作用

针对集合进行简化开发
Stream流的使用通常需要Lambda表达式

三类方法

  1. 获取方法:获取流(创建一个流水线)
  2. 中间方法:在流水线上进行操作
  3. 终结方法:流水线上的操作结束了,要关闭流水线(最后一个操作),一个Stream流只能有一个终结方法

获取方法

单列集合(Collection[List,Set

Stream 流对象 = 单列集合.stream();

双列集合Map(不能直接获取)
  1. 先通过keySet()或EntrySet()获取Set集合
  2. Stream 流对象 = Set集合.stream();
数组

Stream 流对象 = Arrays.stream(数组);

同一类型元素(Stream中的静态方法)

Stream 流对象 = Stream.of(同一类型元素,同一类型元素,…);

常见的中间方法

Snipaste_2024-04-02_16-13-33.png
Snipaste_2024-04-02_16-13-41.png

终结方法

Snipaste_2024-04-02_17-39-26.png

收集方法

Snipaste_2024-04-02_17-49-11.png

Optional类

可以用这个类中的方法判断是否为空
Snipaste_2024-04-02_18-29-11.png

线程

相关概念

并行:在同一时刻,有多个任务在多个CPU上同时执行
并发:在同一时刻,有多个任务在一个CPU上交替执行
进程:正在执行的程序
线程:应用程序中做的事情,是程序运行的基本执行单元
当操作系统执行一个程序时,会在系统中建立一个进程,该进程必须至少建立一个线程(这个线程被称为主线程),作为这个程序运行的入口点。因此,在操作系统中运行的任意程序都至少有一个线程。

多线程

概念

是指从软件或者硬件上实现多个线程并发执行的技术

实现方式

继承Thread类

Snipaste_2024-04-02_20-47-06.png

  1. 创建一个类继承Thread类
  2. 在类中重写run方法(线程执行的任务在该方法中)
  3. 创建线程对象,调用线程的start方法开启线程
实现Runnable接口

Snipaste_2024-04-02_20-47-44.png

  1. 定义一个类实现Runnable接口,并重写run方法(可以用匿名内部类实现)
  2. 创建任务对象
  3. 使用还有Runnable参数的构造方法创建线程对象并指定对象
  4. 调用线程的start方法,开启线程
比较
  1. 只能单继承,线程任务和线程功能都在Thread子类中
  2. 能多实现,线程任务在Runnable接口实现类中,线程功能在Thread类中;有解耦的好处

接口一是用来制定规则,二是用来降低耦合(紧密连接的程度)

常用方法

Snipaste_2024-04-02_21-21-41.png
Snipaste_2024-04-02_21-21-52.png

线程安全

产生的原因

多个线程对于同一个数据,进行读写操作,造成数据错乱

解决思想

把多个线程操作的共享数据,存放到一个安全的环境中
Java语言基于线程安全的问题,提供了同步机制

同步

同步代码块

Snipaste_2024-04-02_22-01-13.png

同步方法

Snipaste_2024-04-02_22-01-50.png

Lock锁机制

Snipaste_2024-04-02_22-03-13.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1563967.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【现代控制】倒立摆模型

基础公式 转动惯量: 欧拉拉格朗日等式 倒立摆模型建立 由拉格朗日等式推导出微分方程: 也就是 将zdot移到等式左边,化简得到 展开就是: 系统线性化 法一:雅可比矩阵 法二:小角度假设 化简最终得…

nslookup查询网站是否支持IPV6

nslookup是一种网络管理命令行工具,可用于查询DNS域名和IP地址输入指令nslookup默认服务器和Address是当前上网所用的DNS服务器域名和地址A记录A(Address)记录指的是用来指定主机名或域名对应的IP记录。

OpenHarmony实战:轻量级系统之子系统移植概述

OpenHarmony系统功能按照“系统 > 子系统 > 部件”逐级展开,支持根据实际需求裁剪某些非必要的部件,本文以部分子系统、部件为例进行介绍。若想使用OpenHarmony系统的能力,需要对相应子系统进行适配。 OpenHarmony芯片适配常见子系统列…

2024春招冲刺题单 ONT68 最接近的三数之和【中等 数组,递归 Java,Go,PHP】

题目 题目链接: https://www.nowcoder.com/practice/f889497fd1134af5af9de60b4d13af23 相同题目: https://www.lintcode.com/problem/59 思路 本题答案是n数之和相关问题的模板。参考答案Java import java.util.*;public class Solution {/*** 代码中的类名、方法…

【C语言】“vid”Microsoft Visual Studio安装及应用(检验内存泄露)

文章目录 前言安装包获取配置VLD完成 前言 我们在写代码时往往容易存在内存泄漏的情况,所以存在这样一个名为VLD的工具用来检验内存泄漏,现在我来教大家安装一下 安装包获取 vld下载网址:https://github.com/KindDragon/vld/releases/tag/…

【GPT5进展】GPT-5将于今年年中发布

OpenAI即将发布的GPT-5代表了人工智能技术的一个重大进步,这一新一代模型预计将进一步扩大OpenAI在AI应用领域的影响力。以下是关于GPT-5的几个关键点,旨在清晰、简洁地向读者传达这一重要更新: 1. 性能和功能的实质性提升 GPT-5在性能上做…

读取信息boot.bin和xclbin命令

bootgen读Boot.bin命令 johnjohn-virtual-machine:~/project_zynq/kv260_image_ubuntu22.04$ bootgen -read BOOT-k26-starter-kit-202305_2022.2.bin xclbinutil读xclbin命令 johnjohn-virtual-machine:~/project_zynq/kv260_image_ubuntu22.04$ xclbinutil -i kv260-smartca…

2024 年每个程序员都应该尝试的 8 个AI工具

随着人工智能技术的极速发展,新的 AI 工具正以前所未有的速度涌现,为开发者们带来了前所未有的机会和挑战。在这个不断演进的时代,掌握最新的 AI 技术已成为每个程序员的必修课。 在本文中,我们收集了8 个程序员在 2024 年值得尝…

函数调用实现小米汽车智能语音助手

上周小米汽车发布,其中有一个特色功能就是智能语音,小爱同学整合了语音大模型,实现智能座舱体验。 雷老板的PPT也演示了,一些口语化的对话就能触发各种指令,无论是开空调、播放音乐,还是找手机、识别前方汽…

vulnhub pWnOS v2.0通关

知识点总结: 1.通过模块来寻找漏洞 2.msf查找漏洞 3.通过网站源代码,查看模块信息 环境准备 攻击机:kali2023 靶机:pWnOS v2.0 安装地址:pWnOS: 2.0 (Pre-Release) ~ VulnHub 在安装网址中看到,该靶…

axios 封装 http 请求详解

前言 Axios 是一个基于 Promise 的 HTTP 库,它的概念及使用方法本文不过多赘述,请参考:axios传送门 本文重点讲述下在项目中是如何利用 axios 封装 http 请求。 一、预设全局变量 在 /const/preset.js 中配置预先设置一些全局变量 window.…

【Qt 学习笔记】Qt 背景介绍

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt 背景介绍 文章编号:Qt 学习笔记 / 01 文章目录 Qt 背景…

vue 条件渲染、列表循环渲染、事件绑定 初探第三天

条件渲染 <script>const app Vue.createApp({data(){return {show:true,conditionOne: false,conditionTwo: true,}},template:<div v-if"show"> hello word </div><div v-if"conditionOne"> if </div><div v-else…

[lesson02]C到C++的升级

C到C的升级 C与C的关系 C继承了所有的C特性C在C的基础上提供了更多的语法和特性C的设计目标是运行效率与开发效率的统一 C到C的升级 C更强调语言的实用性 所有的变量都可以在需要使用时再定义 int c 0; for (int i 1; i < 3; i) {for(int j 1; j < 3; j){c i * …

Kubernetes(k8s):部署、使用 metrics-server

Kubernetes&#xff08;k8s&#xff09;&#xff1a;部署、使用 metrics-server 一、metrics-server简介二、部署metrics-server2.1、 下载 Metrics Server 部署文件2.2、修改metrics-server.yaml 文件2.3、 部署 Metrics Server2.4、 检查 Metrics Server 三、使用 Metrics Se…

国资委确定首批起航企业,重点布局人工智能、量子信息等新兴领域

国务院国资委近日按照“四新”&#xff08;新赛道、新技术、新平台、新机制&#xff09;标准&#xff0c;遴选确定了首批启航企业&#xff0c;加快新领域新赛道布局、培育发展新质生产力。 据了解&#xff0c;去年以来&#xff0c;国务院国资委围绕加快培育创新型国有企业&…

hadoop 查询hdfs资源信息的方式

hdfs dfsadmin -report &#xff3b;-live&#xff3d;&#xff3b;-dead&#xff3d;&#xff3b;-decommissioning&#xff3d;

用动态规划求解多段图的最短路径问题

题目描述 对如下图所示的一个5段图&#xff0c;图上的数字代表该段路径的成本。写出求最短路径的计算过程&#xff0c;给出最短路径和距离。 思路分析 创建一个边权数组edgeWeigth&#xff0c;存储顶点和边的信息&#xff0c;用来表示图创建一个cost数组&#xff0c;索引in…

【MySQL系列】使用 ALTER TABLE 语句修改表结构的方法

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

STM32 DWT数据观察触发器作为延时函数的使用

STM32 DWT数据观察触发器作为延时函数的使用 &#x1f4d1;DWT(Data Watchpoint and Trace数据观察触发器&#xff09;描述 &#x1f4dd;DWT是属于处理器内核单元中的调试组件之一&#xff0c;由四个比较器组成。它们可配置为&#xff1a;硬件监视点或对ETM或PC采样器或数据地…