首页 > 其他分享 >多线程基础

多线程基础

时间:2023-08-27 15:01:07浏览次数:36  
标签:Java 一个 基础 间通信 线程 进程 多线程

进程

在计算机中,我们把一个任务称为一个进程,浏览器就是一个进程,视频播放器是另一个进程。某些进程内部还需要同时执行多个子任务。例如,我们在使用Word时,Word可以让我们一边打字,一边进行拼写检查,我们把子任务称为线程。

进程和线程的关系:一个进程可以包含一个或多个线程,但至少会有一个线程。


进程 vs 线程

进程和线程是包含关系,但是多任务既可以由多进程实现,也可以由单进程内的多线程实现,还可以混合多进程+多线程。


多进程

多进程的缺点在于:

  • 创建进程比创建线程开销大,尤其是在Windows系统上;
  • 进程间通信比线程间通信要慢,因为线程间通信就是读写同一个变量,速度很快。

多进程的优点在于:

  • 多进程稳定性比多线程高,因为在多进程的情况下,一个进程崩溃不会影响其他进程,而在多线程的情况下,任何一个线程崩溃会直接导致整个进程崩溃。


多线程

Java语言内置了多线程支持:一个Java程序实际上是一个JVM进程,JVM进程用一个主线程来执行main()方法,在main()方法内部,我们又可以启动多个线程。此外,JVM还有负责垃圾回收的其他工作线程等

和单线程相比,多线程编程的特点在于:多线程经常需要读写共享数据,并且需要同步。例如,播放电影时,就必须由一个线程播放视频,另一个线程播放音频,两个线程需要协调运行,否则画面和声音就不同步。因此,多线程编程的复杂度高,调试更困难

Java多线程编程的特点又在于:

  • 多线程模型是Java程序最基本的并发模型;
  • 后续读写网络、数据库、Web开发等都依赖Java多线程模型。





标签:Java,一个,基础,间通信,线程,进程,多线程
From: https://blog.51cto.com/u_11354383/7253201

相关文章

  • 零基础学会用Airtest-Selenium对Firefox进行自动化测试
    1.前言本文将详细介绍如何使用AirtestIDE驱动Firefox测试,以及脱离AirtestIDE怎么驱动Firefox(VScode为例)。看完本文零基础小白也能学会Firefox浏览器自动化测试!!!2.如何使用AirtestIDE驱动Firefox浏览器对于Web自动化测试,目前AirtestIDE支持chrome浏览器和Firefox2种浏览器,关于......
  • redis 基础
    随着互联网+大数据时代的来临,传统的关系型数据库已经不能满足中大型网站日益增长的访问量和数据量。这个时候就需要一种能够快速存取数据的组件来缓解数据库服务I/O的压力,来解决系统性能上的瓶颈与其他内存型数据库相比,Redis具有以下特点:Redis不仅可以将数据完全保存在内存......
  • 图论基础
    图论基础树和图的存储无向图:没方向建图需要在两个节点间建两条相反的边add(a,b),add(b,a);有向图:有方向领接矩阵:g[a,b]=权重$a\tob$邻接表(常用):每个点上都有一个单链表,存储该点能到哪些点上去若有权重则加个w[N]数组,以idx为下标记录权值12,324,53NULL......
  • 基础知识
    基础知识redis默认有16个数据库,这个可以在配置文件当中得到验证 而默认使用的是第0个数据库,可以使用select来进行切换数据库,切换成功之后会在端口号后面显示一个2 可以使用dbsize来查看数据库中数据的大小 还可以删除数据库中的数据,有两个命令flushall #删除全部......
  • openstack nova基础知识——RabbitMQ
    nova中各个组件之间的交互是通过“消息队列”来实现的,其中一种实现方法就是使用RabbitMQ,对RabbitMQ的使用,官方文档上有一个非常好的GetStarted,由浅及深,结合例子,很容易理解。现在对RabbitMQ的理解,就是利用它可以非常灵活的定制自己想要实现的消息收发机制。其中,有这样几个角色:produ......
  • 创建多线程继承Thread和实现Runnable以及synchronized的注意事项
    关于创建多线程继承Thread和实现Runnable以及synchronized的注意事项以下是利用多线程模拟购票的代码publicclassSell{publicstaticvoidmain(String[]args){Ticketticket=newTicket();Ticketticket1=newTicket();ticket.star......
  • 聊天机器人预热-AI基础系列文章第11篇
    您的关注是对我最大的支持......
  • LLM设置-AI基础系列文章第12篇
    您的关注是对我最大的支持......
  • HyperLedger Fabric基础:搭建Fabric测试网络(三)
    在本系列第二篇中,我们介绍了如何创建通道与在通道上启动链码的问题。本篇将探索如何使用Peer客户端与区域链网络通信。启动测试网络后,可以使用Peer节点CLI与网络进行交互。Peer节点CLI允许您从CLI调用已部署的智能合约、更新通道或安装和部署新的智能合约。确定当前我们仍处于test-......
  • 答疑讨论-- 《计算机基础与程序设计》(持续更新)
    2023-2024-120231301《计算机基础与程序设计》暑期作业作业信息作业链接作业课程<班级>(2023-2024-1-计算机基础与程序设计)作业要求在哪里<作业>(2023-2024-1计算机基础与程序设计暑期作业)作业目标<《计算机基础与程序设计》预习>《计算机基础与程序设计》......