怎么理解进程和线程?

本文探讨了程序如何在CPU和内存中执行,进程和线程的区别,以及Java中通过继承Thread类、实现Runnable接口和使用FutureTask创建线程的三种方式。强调了Runnable接口的灵活性和与线程池的兼容性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.程序

程序是由一系列的指令和数据组成。但这些执行要运行,就必须要将指令加载至CPU,数据要加载至内存。在执行指令的时候还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理IO的。

2.进程

当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。

进程可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事本、画图、浏览器等),也有的程序只能启动一个实例进程(例如网易云音乐、360安全卫士等)

3.线程

一个线程就是一个指令流。将指令流中的一条条指令以一定的顺序交给CPU执行。

Java中,线程作为最小调度单位,进程作为资源分配的最小单位。在window中进程是不活动的,只是作为线程的容器。

JAVA中如何去创建线程?

这有三种方式创建线程
1.创建Thread类的子类,重写run方法

通过Thread类的子类对象调用start()方法,会做两件事,1是启动一个新线程,2是调用run方法。

2.实现Runnable接口

讲一讲为什么会出现实现Runnable接口的方式。就是因为如果一个子类需要继承其他的类,上面的方式就无法实现,所以引入Runnable接口的形式。

1.首先定义一个类实现Runnable接口。

2.创建当前类的对象

3.将此对象传递到Thread类的构造器中,创建Thread类的实例t1。

4.t1.start();

3.FutureTask配合Thread

FutureTask能够接收Callable类型的参数,用来处理有返回结果的情况。

小结:

方法1是将线程和任务合并在一起,方法2是把线程和任务分开了

1.用Runnable更容易与线程池等高级API配合

2.用Runable让任务类脱离了Thread继承体系,更灵活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值