程序,进程和线程

程序: program是一个指令的集合

进程:process正在执行中的程序,由三部分组成:cpu, code, data。缺点:内存的浪费,cpu的负担

线程:是进程中一个“单一的连续控制流程”

 

进程占用资源,线程共享这些资源

一个进程中至少有一个线程,上限不设

一个进程中的线程共享相同的内存单元/内存地址空间----可以访问相同的变量和对象,而且它们从同一堆中分配对象----通信,数据,同步操作(进程中的线程共享代码和数据空间)

对于线程间的通信是在同一地址空间上进行的,所以不需要额外的通信机制,这就使得通信更简便而且信息传递的速度也更快。

进程抢占到CPU资源后,每个线程再去抢占CPU资源,谁先抢占到就执行谁(所以每次的执行顺序都不一样)

线程结束进程未必结束,但进程结束线程一定结束。

多线程实现方法一:

1.继承Thread类

(1)需要继承Thread类

(2)必须要重写run方法,指的是核心执行的逻辑

(3)线程在启动的时候,不要直接调用run方法,而是要通过start()来进行调用

(4)每次运行相同的代码结果可能不同,原因在于多线程谁先抢占到资源谁运行,无法进行人为控制

2. 实现Runnable接口(使用了代理设计模式)(推荐这种,因为JAVA是单继承,将继承关系留给最需要的类)

(1)实现Runnable接口

(2)重写run方法

(3)创建Thread对象,将刚刚创建好的Runnable的子类实现作为thread的构造参数

(4)通过thread.start()进行启动

推荐使用第二种方式:

1.JAVA是单继承,将继承关系留给最需要的类

2.使用runnable接口之后不需要给共享变量添加static关键字,每次创建一个对象,作为共享对象即可。

(方便资源共享,同一份资源,多个代理访问)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值