进行与线程

进程与线程
进程(process)是操作系统的任务单元,每个程序启动后,操作系统都会为其分配进程编号PID。
线程(Thread)是进程中的任务单元,程序启动的时候,首先会创建主线程,可以在主线程中开辟子线程。每一个线程都对应一个虚拟机栈,栈是线程私有的,堆和方法区是线程共享的。

串行
    在一台机器上单线程执行
并行
    并发:在同一台机器上多线程并行执行(存在资源竞争关系)
    并行:在多台机器上并行执行(不存在资源竞争关系)

线程的五种生命周期

1.新建(new):新创建了一个线程对象。
2.可运行(runnable):线程对象创建后,当调用线程对象的start()方法,该线程处于就绪状态,等待被线程调度选中,获取cpu的使用权。
3.运行(running):可运行状态(runnable)的线程获得了cpu时间片(timeslice),执行程序代码。注:就绪状态是进入到运行状态的唯一入口,也就是说,线程要想进入运行状态执行,首先必须处于就绪状态中;
4.阻塞(block):处于运行状态中的线程由于某种原因,暂时放弃对CPU的使用权,停止执行,此时进入阻塞状态,直到其进入到就绪状态,才有机会再次被CPU调用以进入到运行状态。
阻塞的情况分两种:
1.阻塞时候释放锁2.阻塞时候不释放锁
5.死亡(dead):线程run()、main()方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡
的线程不可再次复生。
 

Java实现多线程的方式有四种

1.继承Thread类,重写run方法

2.实现Runnable接口,重写run方法

3.实现Callable接口,重写call方法

4.线程池

         java中类只能单继承,所以在一个类方便继承Thread的时候,用他继承Thread类实现多线程,否则可以实现Runnable接口来实现多线程,这两者都是没有返回值的,主线程中无法捕获子线程发生的错误。

        如果实现的多线程需要返回值,那么可以实现Callable接口实现多线程,Callable需要设定一个泛型,并且可以返回值。

Thread

Runnable

Callable

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值