进程和线程

进程和线程的区别和联系 我们都知道计算机的核心是CPU,它承担了所有的计算任务,而操作系统是计算机的管理者,它负责任务的调度,资源的分配和管理,统领整个计算机硬件;应用程序是具有某种功能的程序,程序是运行于操作系统之上的。 进程 进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。进程一般由程... 阅读详情

1. 进程: 是一个独立运行的应用程序

​    比如电脑软件,启动起来以后,就是一个进程  进程需要电脑进行分配(可以参考任务管理器)可以获取当前系统内存 网卡 显卡等

​    1.独立性:

​            各个进程之间是互相独立的,互相不影响

​    2.互斥性:

​            每个应用程序(软件)系统分配一个独立的端口号 如果一个软件    qq端    口号是97   idea端口也叫97

写代码时  Demo01 里面main主函数      Demo01可以看成是一个应用程序 就是一个进程

2.线程【重点】

进程是有至少一个或者多个线程组成的。

线程是进程最小的基本单位。

特性:

1.抢占式运行【重要】

给程序分配CPU时,按照时间片来执行,单位时间片抢占式执行的

随机抢占

2.资源共享

同一个进程里面 ,有多个线程 ,这个多个线程可以共享一个数据

java程序:Demo1可以看成一个进程

一个java程序中有两个线程:

1.main主程序 2.垃圾回收的线程

3.并行和并发

并行:真正的同时进行

并发:同时发生,轮流交替执行

4.创建线程的两种方式

java虚拟机允许应用程序同时执行多个执行线程。

创建线程的一种:

创建一个新的执行线程的两种方法。

一个是将一个类声明为Thread的子类,这个子类需要重写run方法Thread。然后可以分配并启动子类的实例。

练习:新建两个线程,一个打印99乘法表,另一个打印直角三角形

package com.xiancheng.test;
class A extends Thread{
    @Override
    public void run() {
        System.out.println("九九乘法表如下:");
        for (int i = 1 ; i < 10 ; i++) {
            for (int j = 1 ; j <= i ; j++){
                System.out.print(j + "*" + i + "=" + i*j + "\t");
            }
            System.out.println();
        }
    }
}
class B extends Thread{
    @Override
    public void run() {
        System.out.println("直角三角形");
        for (int i = 1 ; i < 10 ; i++) {
            for (int j = 1 ; j <= i ; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
public class Demo02 {
    public static void main(String[] args) {
        new A().start();
        new B().start();
    }
}

第二种创建方式:

另一种方法来创建一个线程是 声明实现类Runnable接口,那个类然后实现了run方法,然后可以分配类的实例,在创建Thread时作为参数传递,并启动。

package com.xiancheng.test;
//练习:新建一个线程,一个线程打印99乘法表,另外一个线程打印直接三角形
public class Demo04 {
    public static void main(String[] args) {
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i < 10; i++) {
                    for (int j = 1; j <= i ; j++) {
                        System.out.print(i + "*" + j + "=" + i*j + "\t");
                    }
                    System.out.println();
                }
            }
        }).start();
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 1; i < 8; i++) {
                    for (int j = 1; j <= i; j++) {
                        System.out.print("* ");
                    }
                    System.out.println();
                }
            }
        }).start();
    }
}

开发中常用第二种方式:实现Runnable接口 ,而不是第一种继承Thread

5.线程同步和锁

构造方法:

Thread() 分配一个新的Thread对象

Thread(Runnable target) 分配一个新的Thread对象,第二种创建的形式

Thread(Runnable target , String name) :

分配一个新的Thread对象,并 对这个线程起一个名字

strtic ThreadcurrentThread()返回对当前正在执行的线程对象的引用
StringgetName()返回此线程的名称
voidsteName(String name) 将此现成的名称更改为等于参数name
package com.xiancheng.gouzhao;
class MyThread1 implements Runnable{
    @Override
    public void run() {
        Thread thread = Thread.currentThread();
        System.out.println(thread.getName());
    }
}
class MyThread2 implements Runnable{
    @Override
    public void run() {
        Thread thread = Thread.currentThread();
        System.out.println(thread.getName());
    }
}
public class Demo01 {
    public static void main(String[] args) {
        //常规流程
        Thread thread = Thread.currentThread();//获取当前线程对象
        System.out.println(thread.getName());//获取当前线程的名字  main
        //获取thread2的当前线程对象
        Thread thread2 = new Thread(new MyThread2() , "大黄");
        thread2.start();//大黄
        System.out.println(thread2.getName());//大黄
        
        //简化流程
        new Thread(new MyThread1() , "二狗").start();
    }
}

线程下面的方法:

intgetPriority()返回此线程的优先级
voidsetPriority(int newPriority)更改此线程的优先级

6.线程同步和锁

当多个线程同时请求一个数据的时候,会导致数据不准确的情况。相互之间出现问题,容易出现线程安全问题。比如多个线程操作同一个数据,都打算修改商品库存

线程的同步真实的意思:让你“排队”,几个线程之间要排队。轮流对共享资源进行操作,等一个结束后,另一个在进行操作。    

变量:是唯一的,是准确的

同步代码块: 将一段代码放到synchronized   然后括起来。就会对这段代码加上锁

​            synchronized (this) {

​            }

```
package com.xiancheng.suo;
class Ticket implements Runnable{ //售票
    private int tick = 200; //票
    @Override
    public void run() {
        while (true) {
                test();
                if(tick <= 0){
                    break;
                }
        }
    }
    public synchronized void test(){
        if (tick > 0) {
            System.out.println(Thread.currentThread().getName() +
                    "卖出了第" + tick + "票");
            tick--;
        } else {
            System.out.println("票已经卖完了");
            return;
        }
    }
}
public class Demo01 {
    public static void main(String[] args) {
        Ticket ticket = new Ticket();
        new Thread(ticket , "窗口1").start();
        new Thread(ticket , "窗口2").start();
    }
}
```

手机相机基础技术解析:从硬件到算法的全面指南 手机相机的成像过程可简化为的链路,其核心硬件包括 镜头、CMOS传感器、ISP(图像信号处理器) 以及配套的软件算法。 阅读详情

相关推荐

【Musescore 】开源打谱软件 快速入门笔记

前两天做了个西贝柳斯的打谱软件学习笔记,反正都是初学,今天再来学习一款同类软件,比较之后确定一款深入学习。 西贝柳斯的学习笔记在此:https://blog.youkuaiyun.com/yuetaope/article/details/120020342 西贝柳斯是商业收费软件,要么花钱,要么盗版,如果您觉得这两者都不大好,那么推荐您试试Musescore。 Musescore是一款非常优秀的开源的打谱软件,生态繁荣。“开源”和“生态”是码农业的术语,我用正常人类的语言简单解释一下。 开源就是开放程序源代码,对码农

专注于医院数据分析技术与系统开发的创作与分享。 1万+

进程和线程的区别

转自文章进程和线程的区别 1、根本区别 进程和线程的根本区别是进程是操作系统资源(OS)分配的基本单位,而线程是处理器(CPU)任务调度和执行的基本单位。 2、资源开销: 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。 3、包含关系: 如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线 同完成的;线程是进程的一部分,所行过程不愿一条绿的,而

qq_40855100的博客 2万+

Adams中AKISPL和DX函数的妙用:打造精准的非线性衬套模型

本文深入探讨了在Adams动力学软件中,如何巧妙运用AKISPL插值函数与DX等位移测量函数,构建高精度的非线性衬套模型。文章通过实战案例,详细解析了从单轴非线性刚度到完整六自由度耦合模型的实现步骤与调试技巧,帮助工程师将复杂的实验或有限元数据转化为可靠的多体动力学仿真模型,有效提升系统仿真置信度。

sky77的博客 318

线程和进程 / 进程和线程的区别和联系

💻进程(process) 🎃进程的特点 📢进程跟程序不一样 🎯进程状态 📠线程(Thread) 🔦线程的特点 🚢进程 VS 线程 🛫区别 💡Tips:堆和方法区 🧧多进程和多线程区别

qq_60021974的博客 7710

pytorch图像分类篇: 花分类数据集下载和AlexNet网络搭建训练

一、花分类数据集下载 data_setdata_set该文件夹是用来存放训练数据的目录 使用步骤如下: (1)在data_set文件夹下创建新文件夹"flower_data" (2)点击链接下载花分类数据集 (3)解压数据集到flower_data文件夹下 (4)执行"flower_data.py"脚本自动将数据集划分成训练集train和验证集val ├── flower_data ├── flower_photos(解压的数据集文件夹,3670个样本) ...

橙子的博客 8218

别再凭感觉估算!用ADS的EBOND库精确仿真Bonding线寄生电感(附完整参数设置指南)

本文详细介绍了在ADS中使用EBOND库精确仿真Bonding线寄生电感的方法,帮助射频工程师在毫米波频段实现高精度建模。通过三维物理参数和电磁场求解算法,EBOND模型能将误差控制在5%以内,显著提升电路性能。文章还提供了完整的参数设置指南和实战操作步骤,适用于5G毫米波前端模块等高频应用场景。

weixin_28730131的博客 506

线程和进程的区别

1. 进程(Process)进程是计算机中运行的一个程序的实例。它是操作系统分配资源和调度的基本单位,每个进程都有自己的内存空间、文件描述符和其他资源。每个进程都有独立的地址空间。进程之间的通信需要通过进程间通信(IPC)机制,例如管道、信号量或消息队列。进程是重量级的,创建和销毁成本较高。2. 线程(Thread)线程是进程中的一个执行单元,是CPU调度的基本单位。一个进程可以包含多个线程,它们共享进程的资源。线程之间共享同一个进程的内存空间和资源(例如堆和全局变量)。

Flying_Fish_roe的博客 5979

PLSQL Developer安装详细步骤

一、下载安装PLSQL Developer(plsql安装百度也有步骤) 官网下载地址:https://www.allroundautomations.com/registered-plsqldev/ 1、网上自己下载适合自己电脑的安装包(32或64),并解压。 2、打开解压的文件夹,得到以下三个文件(分别是汉化工具,PLSQL安装包、激活码),双击安装,如下图: 3、安装界面,点击next,进入下一步,如图: 4、安装协议界面,此处必须选择“I accept the terms in

Gorden的博客 11万+

Linux进程和线程的区别和联系

Linux中,线程是CPU调度和分派的基本单位,进程是分配资源的基本单位(操作系统)

qq_44846784的博客 2489

PD3.0详解 协议的时序timer和counter计数

前面介绍了关于PD协议的交互,还有协议层数据各个字段的含义,但是一直没有系统的说关于协议的时序,还有部分counter,就是协议允许发送的次数,或者一些其他计数。 大师匈今天说一下关于这方面的东西,这些东西都是非常关键的东西,但是相对来说PD标准内对时序的要求还是比较宽泛,非常容易能够实现这样的要求。 Timer 1、CRCReceiveTimer 0.9~1.1ms 表示每次通信收到goodcrc的时间,必须在这个时间内收到goodcrc, 我们要注意不是在0.9~1.1ms内,而是第三方可以在这个范

大师匈的博客 5007

vTestStudio保姆教程之从0到1搭建软件环境

学习HIL测试的必经之路,保姆级教学VT从搭建到测试。

欢迎来到eee的博客 4185

线程和进程

这种计算密集型任务虽然也可以用多任务完成,但是任务越多,花在任务切换的时间就越多,CPU执行任务的效率就越低,所以,要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。当有某个任务完成的时候,会yield这个任务,就能执行for循环下面的语句,然后继续阻塞住,循环到所有任务结束,同时,先完成的任务会先返回给主线程。

qq_45726327的博客 1211

通信算法之283:大疆DJI云哨系统-DJI DroneID物理层协议-解速率匹配及Turbo译码

3. 完整云哨接收机,接收灵敏度。交流: 1279682290 ,2. Turbo译码模块。1. 解速率匹配模块。

leegang12的专栏 868

Java之进程和线程

深入理解进程和线程 生动形象的比喻: 进程:一个车间 = 一个进程; (即一个运行的程序) 多进程:一座工厂可以同时运行多个车间; CPU和进程:单CPU只能同时运行单个进程,多CPU可以同时运行多个进程。 线程分为单线程和多线程 单线程:车间内一个工人 = 一个线程; 多线程:车间内多个工人 = 多个线程; 进程与线程:一个进程可以包括多个线程。 线程间内存共享:一个车间的空间是工人们共享的,比如许多房间是每个工人都可以进出的。 同理一个进程的内存空间是共享的,里面的每个线..

NoviceZ的博客 996

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

进程和线程区别、进程和进程,线程和线程怎么通信

1 进程和线程区别 根本区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小。 所处环境:在操作系统中能同时运行多个进程(程序);而在同一个进程(程序)中有多个线...

每天多学一点点. 的博客 545

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

程序、进程和线程

本文主要介绍程序、进程和线程的基本概念和进程的一些相关知识。提示:以下是本篇文章正文内容,下面案例可供参考程序(Program)是由程序员编写的一组稳定的指令,保存咋爱硬盘上。进程(Process)是运行中的程序,存在于内存(包括虚拟内存)中。线程(Thread)是利用CPU的一个基本单位,也称轻量级进程。程序是一个静态的被动实体,程序员编写(编译、链接生成可执行代码)完以后就保存在硬盘上,进程是一个动态的主动实体,运行某个程序(操作系统需要把程序调入内存)的时候才会产生进程,进程是与运行密切相关的。

zk124_的博客 1315

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

上一篇: IO流【重点】
下一篇: 多线程生产者消费者问题
Java_dacainiao
博客等级 码龄4年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值