进程和线程的区别

进程

什么是进程呢
进程就是一个正在执行的程序 ,是计算机操作系统进行资源分配和任务调度的基本单位.
进程是计算机中的程序关于某个数据集合上的一次运行活动,是系统分配资源的基本单位,是操作系统结构的基础.每个进程都有它自己的地址空间,包括文本区域 、数据区域和堆栈区域等部分。进程是一个动态的概念,相反程序是静态的指令集合。一个进程包含一个程序,程序是进程完成相应的功能的描述;但一个程序对应多个进程。
进程的状态
进程的状态包括就绪状态、阻塞状态和运行状态
进程的特点
并发性: 多个进程可以在同一时间内在不同处理器(CPU)上并行执行,提高了计算机操作系统的资源利用率 和并发性能.
==动态性:==进程的=是一个动态的概念,它会随着程序的执行而产生,随着程序的终止而消亡.
独立性: 每个进程都有自己的地址空间和系统资源,相互独立运行. 这样可以使得每个进程之间不会相互干扰 可以保证系统的稳定性.

线程

线程是操作系统能够进行运算调度的最小单位,它是操作系统能够识别的最小并发单位
线程是"轻量级"的进程 一个进程里可以有多个线程。 每个线程都有独立的栈空间,线程之间共享全局变量和静态变量。线程之间的通信比进程之间的通信更快,它们共享着同一块内存空间。
虽然线程可以提高我们程序的运行性能 ,但是线程过多会导致系统资源的浪费,甚至会导致死锁等问题 。 在使用线程的时候,我们应该根据实际情况合理安排线程的数量。

怎么创建一个线程

在Java中,我们可以通过一下方式 创建线程
1、继承Thread类并重写run()方法。
2、实现Runnable接口并重写run()方法。
第一种实现的代码如图:

package thread;
//直接继承Thread类创建线程
class MyThread extends Thread {
    @Override
    public void run() {
        //这里要写分代码,就是该线程要完成的工作
        while (true) {
            System.out.println("hello thread");
            //让程序休眠1s
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
public class Demo1 {
    public static void main(String[] args) {
        Thread t = new MyThread();
        t.start();  //启动线程  相当于创建了新的线程  如果直接调用run()方法就不算创建新的线程

        while (true) {
            System.out.println("hello main");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

第二种如下图:

package thread;

//利用实现Runnable接口来创建线程
class MyRunnable implements Runnable {

    @Override
    public void run() {
        while (true) {
            System.out.println("hello thread");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}
public class Demo2 {
    public static void main(String[] args) {
        Thread t = new Thread(new MyRunnable());
        //启动线程
        t.start();

        while (true) {
            System.out.println("hello main");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }
    }
}

进程和线程的区别

根本区别

进程是操作系统资源分配的基本单位,线程是CPU任务调度和执行的基本单位。

1、资源开销

进程需要更多的系统资源,因为每个进程都有自己的地址和空间。在对比之下,线程需要的资源较少,因为在同一进程中所有的线程都共享相同的地址空间和资源。

2、包含关系

一个进程可以包含多个线程,这些线程可以并行执行,从而可以提高程序的运行的效率。

3、内存分配

进程之间都是相互独立的,他们各有自己的地址空间和资源。同一进程中的所有线程共享相同的地址空间和资源。

4、影响关系

如果是一个进程崩溃,在保护的模式下不会对其他的进程产生影响。但是如果一个线程崩溃,可能会导致整个进程崩溃。

Java和C++在线程上的区别

1、跨平台性

Java是一个跨平台的语言,因此在它的线程模型上也是跨平台的。无论在哪个操作系统上,Java的线程行为都是一致的。而C++的线程模型则依赖具体的操作系统,不同的操作系统可能有不同的线程实现方式。

2、生命周期管理

在C++中,线程的生命周期是在主线程的运行期间内,也就是说,子线程的生命周期是在主线程的运行期间内结束的。 在Java中,子线程的生命周期可以延续到主线程之外,即主线程结束后,子线程还可以继续运行,除非它被标记成后台线程(守护线程)。

操作系统中为什么有进程

总的原因就是:进程的存在是为了实现多道程序并发执行和资源共享。

资源分配

进程是操作系统分配资源的基本单位。通过创建进程,操作系统可以为每个程序分配独立的资源,保证每个进程在运行时不会相互干扰 。

并发执行

进程允许多个程序同时运行,提高了系统的并发性和效率。可以充分利用CPU同时执行多个任务。

独立性和隔离性

每个进程都有自己独立的地址空间,相互隔离。这也就是说一个进程的崩溃不会影响其他进程的正常运行。

方便管理

操作系统可以通过进程对程序进行管理、调度 ;进程会提供一种统一的方式来组织操作系统中的程序执行。

好了 本篇内容到此就完了 ,后面还会讲讲多线程的一些其他知识 谢谢大家的浏览 !!!

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值