多线程复习(一)

一,基础

(一)什么是线程,什么是进程

1,进程是一个应用程序

2,线程是一个进程中的执行场景/致辞那个单元,一个进程可以启动多个线程

(二)对于java程序莱索,当一个dos窗口命令输入:java hello回车后

1,会启动JVM,JVM是一个进程

2,JVM会先启动一个主线程调用main方法

3,同时启动一个垃圾会后器,负责看护

4,java程序至少会有两个线程并发

(三)进程和线程的关系

1,如果进程是公司那么线程就是公司中某个员工

2,进程之间内存不共享

3,线程之间堆内存和方法区内存共享,但是一个线程一个栈。

4,java中间之所以有多线程机制,目的就是为了提高程序的处理效率。

(四)使用多线程之后,main方法结束,是不是还有可能程序也不会结束?

main方法结束只是主线程结束了,主栈空了,其他的栈还有可能在压栈弹栈

二,进阶

(一)对于单核的CPU来说可以真正的多线程并发吗?

1,不是

2,他不是真正的并发,但是可以给人一种并发的感觉。单核的cpu在一个时间点只能执行一个任务。是多线程之间的频繁切换

3,对于多核来说才是真正的多线程并发

(二)线程的实现。

1,方法一 编写一个类,直接继承Thread,重写run方法

然后再main当中创建类,并通过类名调用start方法

start方法的作用是 启动一个分支线程,在JVM中开辟一块新的栈空间

只要新的栈空间开辟出来这个方法就结束了,线程就启动成功了,启动成功的线程会自动调用run方法,并且run放在栈的底层

run方法在分支栈的作用和main差不多,他们是平级的

直接调用run方法是不会启动线程的

2,方法二,编写一个类,实现runnable接口,实现run方法

问题,为什么选则第二种方法实现runnable接口的方法更好

1,面向接口编程

2,Thread有局限性,实现了Thread就没办法继承别的类(只能继承一个,却能实现多个接口)

(三)线程的生命周期

1,线程在就绪和运行两个状态之间频繁切换

2,状态 新建状态

就绪状态

运行状态

阻塞状态

死亡状态

3,生命周期图

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值