关于java的多线程初识

关于java的多线程初识

我们从今天开始,正式学习java的多线程,我们在前面的文章中学习到了java的基础, 但是距离我们工作实战还差的很远,我们学习好了基础,以后的文章会逐步的深入,去讲解各种前端框架,微服务等等😀

线程简介

  • 任务
  • 进程
  • 线程
  • 多线程

一、任务

  • 多任务

比如我们过年吃饭,是一个”任务“,但是吃饭的时候我们玩手机抢红包,就是第二个“任务”,边吃饭边玩手机,就是一个人同时做两个任务,又比如,我们在开车的时候打电话,也是在进行多任务。

现实生活中太多这样同时做多种事的例子了,看起来是多个任务都在做,其实本质上我们的大脑在同一时间依旧只是做了一件事。

二、多线程

  • 多线程:java.thread

在我们的生活中,多线程非常的常见,比如说我们经常玩的王者荣耀,英雄联盟这类游戏,和同学一起开黑,可以看到在一个画面里面,但是又做着不同的事情,又比如微信聊天,我们在聊天的时候,可以同时发消息。

我们在小时候玩过暴力摩托的游戏,只有一条车道,所以只能通过暴力的方式走到终点🤣

但是慢慢的车多了,一条路严重堵塞,效率太低了,所以为了提升效率,也为了充分利用道路,增加了一条车道。

比如程序开发中的购票系统,如果只能按照一个人一个人去走,那效率会极低,所以考虑到并发多线程的方式去解决开发中不少低效率的点,让程序更加贴切生活,创造价值。

三、普通方法调用和多线程

在这里插入图片描述

四、程序的进程和线程

  • Process:进程

  • Thread:线程

  • 在操作系统中,运行的程序就是进程,比如微信,播放器,游戏,开发工具等等。

我们在看用播放软件看电影的时候,会听到声音,看到图像,看到字幕,这个播放软件是一个进程,里面这些东西是很多线程。

  • 一个进程可以有多个线程,就像弹幕,图像等。

  • 程序,是指令和数据的有序集合,本身没有运行的含义,是一个静态的概念。

  • 进程,是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单位。

  • 线程,是一个进程中可以包含若干个,一个进程中至少有一个线程,不然没有存在的意义,线程是CPU调度和执行的单位。

  • 注意:很多多线程是模拟出来的,真正的多线程是指有多个cpu,即多核,如服务器。如果是模拟出来的多线程,即在一个cpu的情况下,在同一个时间点,cpu只能执行一个代码,因为切换的很快,所以就有同时执行的错局。

五、本章核心概念

  • 线程就是独立的执行路径。
  • 在程序运行时,即使没有自己创建线程,后台也会有多个线程,主线程:main,垃圾回收线程:gc
  • main()称之为主线程,为系统的入口用于执行整个程序。
  • 在一个进程中,如果开辟了多个线程线程的运行由调度器安排调度,调度器是与操作系统紧密相关的,先后顺序是不能人为的干预的。
  • 对同一份资源操作时,会存在资源抢夺的问题,需要加入并发控制。
  • 线程会带来额外的开销,如cpu调度时间,并发控制开销。
  • 每个线程在自己的工作内存交互,内存控制不当会造成数据不一致。

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

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

相关文章

Flink从入门到实践(三):数据实时采集 - Flink MySQL CDC

文章目录 系列文章索引一、概述1、版本匹配2、导包 二、编码实现1、基本使用2、更多配置3、自定义序列化器4、Flink SQL方式 三、踩坑1、The MySQL server has a timezone offset (0 seconds ahead of UTC) which does not match the configured timezone Asia/Shanghai. 参考资…

【python】网络爬虫与信息提取--requests库

导学 当一个软件想获得数据,那么我们只有把网站当成api就可以 requests库:自动爬取HTML页面,自动网络请求提交 robots协议:网络爬虫排除标准(网络爬虫的规则) beautiful soup库:解析HTML页面 工具&…

算法---回溯(正文)

1.什么是回溯? 回溯算法的定义就是和暴力枚举一样枚举所有可能并加撤回,也能和暴力一样去掉一些重复(在之前就被筛出,但还要枚举这个,我们可以跳过这个了---------这个就是回溯剪枝)。但为什么回溯不是暴力…

【精选】java多态进阶——多态练习测试

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏…

Mac上新版InfluxDB使用教程

一、简介 官网:influxdb 二、influxdb安装 建议使用Homebrew在 macOS 上安装 InfluxDB v2: brew install influxdb启动influxdb服务:brew services start influxdb 停止influxdb服务:brew services stop influxdb 查看是否启…

使用R语言fifer包进行分层采样

使用R语言fifer包中的stratified()函数用来进行分层采样非常方便,但fifer包已经从CRAN存储库中删除,需要从存档中下载可用的历史版本,下载链接:Index of /src/contrib/Archive/fifer (r-project.org)https://cran.r-project.org/s…

opencv 图像色彩空间转化

今天看了b站贾志刚的课,觉得不错,特地做学习笔记来和小伙伴分享 贾志刚的这个好像是2.0版本,30小时的,语言更加精炼,适合初级入门学习 第一节是常规安装 看他的步骤装就行了,记得配置完点应用再点确定,我第一次就是 没点然后就失败了,又得重配置一次…

python+flask+django农产品供销展销电子商务系统lkw43

供销社农产品展销系统的设计与实现,最主要的是满足使用者的使用需求,并且可以向使用者提供一些与系统配套的服务。本篇论文主要从实际出发,采用以对象为设计重点的设计方法,因此在进行系统总体的需求分时借助用例图可以更好的阐述…

电缆线的阻抗50Ω,真正含义是什么?

当我们提到电缆线的阻抗时,它到底是什么意思?RG58电缆通常指的是50Ω的电缆线。它的真正含义是什么?假如取一段3英尺(0.9144米)长的RG58电缆线,并且在前端测量信号路径与返回路径之间的阻抗。那么测得的阻抗是多少?当然…

使用UMAP降维可视化RAG嵌入

大型语言模型(LLMs)如 GPT-4 已经展示了出色的文本理解和生成能力。但它们在处理领域特定信息方面面临挑战,比如当查询超出训练数据范围时,它们会产生错误的答案。LLMs 的推理过程也缺乏透明度,使用户难以理解达成结论…

指针的基本含义及其用法

1.前言 在学习C语言的时候,我们会经常接触一个概念,指针和地址,关于这两个概念很多人并不能理解地十分透彻,接下来我将详细介绍一下这两者的概念 2.地址 我们知道计算机的上CPU(中央处理器)在处理数据的时…

C++重新入门-循环

目录 1.循环类型 while循环: for循环 基于范围的for循环(C11) do...while 循环 2.循环控制语句 3.无限循环 有的时候,可能需要多次执行同一块代码。一般情况下,语句是顺序执行的:函数中的第一个语句先执行,接着…

AI:126-基于深度学习的人体情绪识别与分析

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…

react函数组件中使用context

效果 1.在父组件中创建一个createcontext并将他导出 import React, { createContext } from react import Bpp from ./Bpp import Cpp from ./Cpp export let MyContext createContext(我是组件B) export let Ccontext createContext(我是组件C)export default function App…

使用client-only 解决组件不兼容SSR问题

目录 前言 一、解决方案 1.基于Nuxt 框架的SSR应用 2.基于vue2框架的应用 3.基于vue3框架的应用 二、总结 往期回顾 前言 最近在我的单页面SSR应用上开发JSON编辑器功能,在引入组件后直接客户端跳转OK,但是在直接加载服务端渲染的时候一直报这…

Netty应用(六) 之 异步 Channel

目录 12.Netty异步的相关概念 12.1 异步编程的概念 12.2 方式1:主线程阻塞,等待异步线程完成调用,然后主线程发起请求IO 12.3 方式2:主线程注册异步线程,异步线程去回调发起请求IO 12.4 细节注释 12.5 异步的好处…

HiveSQL——用户行为路径分析

注:参考文档: SQL之用户行为路径分析--HQL面试题46【拼多多面试题】_路径分析 sql-CSDN博客文章浏览阅读2k次,点赞6次,收藏19次。目录0 问题描述1 数据分析2 小结0 问题描述已知用户行为表 tracking_log, 大概字段有&…

2.12作业

程序代码&#xff1a; #include<stdlib.h> #include<string.h> #include<stdio.h>//递归实现n! int n(int element) {if(0element)return 1;return element*n(element-1); }//递归实现0-n的和 int sub_sum(int element) {if(0element)return 0;return eleme…

计算机二级C语言备考学习记录

一、C语言程序的结构 1.程序的构成&#xff0c;main函数和其他函数。 程序是由main函数和其他函数构成main作为主函数&#xff0c;一个C程序里只有一个main函数其他函数可以分为系统函数和用户函数&#xff0c;系统函数为编译系统提供&#xff0c;用户函数由用户自行编写 2.…

《动手学深度学习(PyTorch版)》笔记7.7

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…