进程和线程异同辨析

一.进程和线程

一个执行中的程序就是进程,进程就是一个被动程序被执行之后实体,现在的操作系统都有多个任务,一个进程去完成一个任务。进程是cpu分配资源的基本单位,一个进程中会有多个顺序执行流,这时就需要线程来负责执行每一个执行流,进程中至少包含一个线程,进行中的线程共享进程被cpu分配的资源,因此说线程是cpu执行的基本单位。每个线程都拥有属于自己的独立寄存器以及栈,每个线程和进程中的其他线程共享进程的代码段,数据段和其他操作系统的资源,例如打开文件和信号。

二.为什么要用线程?是否越多越好?

当一个进程中拥有多个线程的时候,就可以同时做多个任务,在单核cpu中,虽然不会真正实现同时,但是实际上线程之间交替使用cpu的时间片来完成任务,cpu的时间片很短,线程之间的切换也很快,相比较人操作的速度,其实人是感觉不到cpu是被线程顺序使用的,因此会给人一种同时实现多个任务的感觉,给人充足的交互感。使用线程本质上是提高硬件的资源利用率。
那是否是线程越多越好呢?当然不是,虽然多线程会提高cpu等硬件的资源利用率,但是设想一下如果线程高达上万个,那cpu的调度将会在极短的时间内就要实现给一个线程分配cpu,当线程数量达到一定时,就会崩溃。因此一个进程中合适的线程数量是不高于1000;

三.线程的创建和使用

JAVA使用Thraed类代表线程,所有的线程对象都必须是Thread类或者其子类的实例,每个线程的任务是完成一定任务,或者说是执行一段程序流。
线程的创建这里讲两种常用方法:
(一)继承Thread类创建线程类
步骤:
①定义Thread类的子类并重写该run方法,run方法里实现的内容就是该线程要完成的任务。
②创建Thread类的实例,就是线程对象的实例
③用该实例来调用线程的start方法来启动线程
具体如下:
在这里插入图片描述

(二)实现Runnable接口
①定义Rnunnable接口的实现类,并重写它的run 方法
②创建Runnable实现类的实例,并将此实例作为Thread的target创建一个Thread对象,该对象才是真正的线程对象
③用该实例调用 start方法,启动线程
具体实现举例:在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值