Java基础(十八)——线程与进程、多线程(本质、创建方式)、线程的休眠、生命周期、临界资源

Java基础(十八)——线程与进程、多线程(本质、创建方式)、线程的休眠、生命周期、临界资源

一、初识线程与进程

打开任务管理器,即可看到进程

在这里插入图片描述

进程:程序执行的j基本单位,程序由一个或者多个进程组成。
线程:线程是 CPU 执行的基本单位,进程是有一个或者多个线程组合合成。

举个例子:
音乐播放器播放音乐的同时还有歌词在滚动。其中,歌词就是一个线程在负责,播放音乐又是另外一个线程在负责。

二、初识多线程

1、多线程的本质

线程是由 CPU 调度执行,多线程是 CPU 不断地来回切换调度不同的线程执行的结果。

2、多线程创建的方式

a、继承

自定义线程类并继承 Thread 类,重写 run()方法。接着实例化自定义类,通过对象调用 start()开启线程:

在这里插入图片描述

b、实现 Runnable 接口

自定义任务类并实现 Runnable 接口,重写 run()。实例化自定义任务类,实例化 thread 类并在构造方法中传递任务类的对象,通过 Thread 类对象调用 start()方法开启线程:
在这里插入图片描述

c、实现 Callable 接口(了解即可,很少用)

自定义类实现 Callable 接口,重写 call()方法,拥有返回值。

d、通过线程池启动线程

线程池:可以实现线程的重复使用,减少线程的创建和销毁时间。

(1)一条线程的线程池

在这里插入图片描述

(2)三(多)条线程的线程池

在这里插入图片描述

(3)自带缓冲区的线程池

在这里插入图片描述

3、 Thread.sleep(毫秒)——线程的休眠

sleep()可以直接通过 Thread 的类来调用。
在这里插入图片描述

4、线程的五种状态(线程的生命周期)

在这里插入图片描述

5、临界资源

临界资源:多个线程共享一份数据

问题:下面代码输出结果?
在这里插入图片描述
答案是:
在这里插入图片描述

因为创建了三条线程,num 这个变量每个对象都有。所以是10。

如果要变成临界资源,就用把这个变量变成静态的:
在这里插入图片描述

这样,变量共享了以后,最终结果就是30。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值