认识进程和线程 清疚 2023-09-25 20:54 8阅读 0赞 ### 前言: ### (1)计算机的操作系统大多采用多任务和分时设计,多任务是指在一个操作系统中可以同时运行多个程序; (2)例如在使用QQ聊天的同时听音乐,即有多个独立运行的任务,每个任务对应一个进程,每个进程又可以产生多个线程。 ### 1、进程 ### (1)程序(Program)是对数据描述与操作的代码的集合,如Office中的Word等应用程序。 (2)进程(Process)是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完成过程,这个过程也是进程本身从产生、发展至消亡的过程。 (3)操作系统同时管理一个计算机系统中的多个进程,让计算机系统中的多个进程轮流使用CPU资源,或者共享操作系统的其它资源。 (4)进程有如下特点: 1)进程是系统运行程序的基本单位; 2)每一个进程都有自己独立的一块内存空间、一组系统资源; 3)每一个进程的内部数据和状态都是完全独立的。 ### 2、线程 ### (1)线程是进程中执行运算的最小单位,一个进程在其执行过程中可以产生多个线程,而线程必须在某个进程内执行。 (2)线程是进程内部的一个执行单元,是可完成一个独立任务的顺序控制流程,如果在一个进程中同时运行了多个线程,用来完成不同的工作,则称之为多线程。 (3)线程按处理级别可以分为核心级线程和用户级线程; 核心级线程: 1)核心级线程是和系统任务相关的线程,它负责处理不同进程之间的多个线程; 2)允许不同进程中的线程按照同一相对优先调度方法对线程进行调度,使它们有条不紊地工作,可以发挥多处理器的并发优势,以充分利用计算机的软/硬件资源; 用户级线程: 1)在开发程序使,由于程序的需要而编写的线程,这些线程的创建、执行和消亡都是编写在应用程序时进行控制的; 2)对于用户级线程的切换,通常发生在一个应用程序的诸多线程之间,如浏览器中的多线程下载就属于用户线程。 3)多线程可以改善用户体验。具有多个线程的进程能更好地表达和解决现实世界的具体问题,多线程是计算机应用开发和程序设计的一项重要的实用技术。 (4)线程和进程既有联系又有区别: 1)一个进程中至少要有一个线程; 2)资源分配给进程,同一进程的所有线程共享该进程的所有资源; 3)处理机分配给线程,即真正在处理机上运行的是线程。 ### 3、多线程的优势 ### (1)多线程程序可以带来更好的用户体验,避免因程序执行过慢而导致计算机出现计算机死机或者白屏的情况; (2)线程程序可以最大限度地提高计算机系统的利用效率。如浏览器的多线程下载。 ### 4、编写线程类 ### (1)每个程序至少自动拥有一个线程,称为主线程; (2)当程序加载到内存时启动主线程; (3)Java程序中的public static void main()方法是主线程的入口,运行Java程序时,会先执行这个方法; (4)开发中,用户编写的线程一般都是指除了主线程之外的其他线程; (5)使用一个线程的过程可以分为以下4个步骤: 第一步:定义一个线程,同时指明这个线程所要执行的代码,即期望完成的功能。 第二步:创建线程对象。 第三步:启动线程 第四步:终止线程。 (6)定义一个线程类通常有两种方法,分别是继承java.lang.Thread类和实现java.lang.Runnable接口。 1) 使用Thread类创建线程 Java提供了java.lang.Thread类支持多线程编程,该类提供了大量的方法来控制和操作线程,常用方法如下: void run():执行任务操作的方法; void start():使该线程开始执行; void sleep(long millis):在指定的毫秒数内让当前正在执行的线程休眠(暂停执行); String getName():返回该线程的名称; int getPriority():返回线程的优先级; void setPriority(int newPriority):更改线程的优先级; Thread.State getState():返回该线程的状态; boolean isAlive():测试线程是否处于活动状态; void join():等待该线程终止; void interrupt():中断线程; void yield():暂停当前正在执行的线程对象,并执行其他线程。 需要注意的是: 1)创建线程时继承Thread类并重写Thread类中run()方法; 2)Thread类的run()方法是线程要执行操作任务的方法,所以线程要执行的操作代码都需要写在run()方法中,并通过调用start()方法来启动线程。 下面是关于私用Thread类创建线程: public class MyThread extends Thread{ @Override public void run() { for (int i = 1; i <= 100; i++) { System.out.println(Thread.currentThread().getName()+"正在运行,第"+i+"次。"); } } } public class Test { public static void main(String[] args) { //创建MyThread类对象 MyThread myThread = new MyThread(); MyThread myThread1 = new MyThread(); //启用线程,需要调用start方法来启动线程 //直接调用run()方法是通过主线程main()来执行 myThread.setName("小鱼儿"); myThread1.setName("花无缺"); myThread.start(); myThread1.start(); } } 2)使用Runnable接口创建线程 使用继承Thread类的方式创建线程简单明了,符合大家的习惯,但它有一个缺点,如果定义的类已经继承了其他类则无法再继承Thread类,这时候就需要使用Runnable接口创建线程的方式来解决问题;一个类可以通过实现Runnable接口并实现run()方法完成线程的所有活动,已实现的run()方法称为该对象的线程体;任何一个实现Runnable接口的对象都可以作为一个线程的目标对象。 下面是关于使用接口Runnable方法的代码: //实现Runnable接口 public class MyThread implements Runnable{ @Override public void run() { for (int i = 1; i <= 100; i++) { System.out.println(Thread.currentThread().getName()+"正在运行,第"+i+"次。"); } } } public class Test { public static void main(String[] args) { //创建MyThread类对象 MyThread myThread = new MyThread(); //MyThread类中没有start()方法,其父类Object类中也没有start()方法,其实现的接口R Thread thread1 = new Thread(myThread,"天山童姥"); Thread thread2 = new Thread(myThread,"李秋水"); //启动线程 thread1.start(); thread2.start(); } } (7)两种创建线程的方式有各自的特点和应用领域: 1)直接继承Thread类的方式编写简单,可以直接操作线程,适用于单重继承的情况; 2)实现Runnable接口的方式,当一个线程继承了另一个类时,就只能用实现Runnable接口的方法来创建线程,而且这种方式还可以使多个线程之间使用同一个Runnable对象。
相关 线程和进程 目录 进程 线程 实现多线程的方法 方式一:继承Thread类 设置和获取线程名称 线程调度 线程控制 线程的状态(生命周期) 方式二:实现Runnab 曾经终败给现在/ 2024年04月01日 01:38/ 0 赞/ 79 阅读
相关 线程和进程 目录 一、线程和进程的区别 二、线程 三、分时操作系统 四、如何减少上下文切换 五、多线程和单线程 六、多线程的使用场景 -------------------- 亦凉/ 2023年10月01日 21:23/ 0 赞/ 22 阅读
相关 认识进程和线程 前言: (1)计算机的操作系统大多采用多任务和分时设计,多任务是指在一个操作系统中可以同时运行多个程序; (2)例如在使用QQ聊天的同时听音乐,即有多个独立运行的任务, 清疚/ 2023年09月25日 20:54/ 0 赞/ 9 阅读
相关 线程和进程 线程和进程 一、线程和进程 线程是CPU调度和分派的基本单位。 进程对于操作系统来说就是一个任务。 听起来挺难懂的一句话,我们举一个实际例子:比如现在有一条需要 迈不过友情╰/ 2023年05月29日 14:29/ 0 赞/ 25 阅读
相关 iOS 进程、线程、多线程、多进程... 的认识 iOS 进程、线程、多线程、多进程… 的认识 基于对进程、线程的记忆模糊,为了提高自己的认知,查找了许多许多资料,做了一次汇总。`PS:` 感谢广大网友。原文链接: [简 叁歲伎倆/ 2023年01月16日 14:25/ 0 赞/ 239 阅读
相关 进程和线程 1.概念 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位 我就是我/ 2022年07月16日 08:11/ 0 赞/ 258 阅读
相关 进程和线程 进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。 线程:是进程的一个执行单元,是进程内调度实体。比进程更小的独立运行 ╰半夏微凉°/ 2022年02月19日 21:13/ 0 赞/ 347 阅读
相关 进程和线程 进程和线程 开发工具与关键技术:java 撰写时间:2019/5/15 进程和线程 进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间 ╰半夏微凉°/ 2022年01月31日 06:47/ 0 赞/ 278 阅读
相关 进程和线程 进程和线程 概念 进程就是操作系统中执行的一个程序,操作系统以进程为单位分配存储空间,每个进程都有自己的地址空间、 数据栈以及其他用于跟踪进程执行的 川长思鸟来/ 2021年10月30日 05:08/ 0 赞/ 425 阅读
相关 线程和进程 1.定义 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它 红太狼/ 2021年06月24日 14:36/ 0 赞/ 539 阅读
还没有评论,来说两句吧...