JAVA多线程总结(一:进程与线程的概念以及如何使用多线程)

一、进程与线程的概念

以下多线程总结内容均为高洪岩  老师创作的Java多线程编程核心技术》书籍所得。以做笔记记录。希望对同样在学习多线程的同学有所帮助。也感谢 高洪岩  老师。

在说线程的技术的时候,我们得知道一个概念,就是什么是“进程”,看下图


我们可以理解为,在windows系统中,运行在内存中的exe文件理解为进程。进程是受操作系统管理的基本运行单位。

那什么是线程呢?

线程可以理解成在进程中独立运行的子任务。比如在运行QQ时,我们可以同时聊天、视频、发文件、听音乐等。QQ.exe是一个进程,聊天、视频、发文件、听音乐每一个都是一个运行在QQ进程里的任务线程。

二、如何使用多线程

实现多线程编程的方法有四种,先说java 1.5之前的两种

1:继续Thread类

我们先来看一个代码运行接口,如下图


(1)可知main方法也是一个线程

(2)代码的运行结果与执行顺序或调用顺序是无关的(这个后面再会举例是为什么)

对于上面第二点我们再看一个图。


如果我们把 start()改为 run()的话,就会发现调用的顺序是一致的,这是为什么呢?

因为 线程 分为 5 种状态:创建、就绪、运行、阻塞、死亡

而start()代表线程就绪,等待的是系统进程自动来调用。

而run()则是可以我们手动控制什么时候运行的。

也就是说,main方法是系统自动调用的,先执行了main入口,然后执行mythread的run方法,最后的print()必须等待mythread的run方法执行完之后才会调用。

2:实现Runnable接口

可能有人问,为什么已经有继承的Thread类了,还有一个Runnable接口呢,其实Thread也是实现的Runnable接口。


因为java只能支持单继承,所以使用实现Runnable接口的方式可以更加的灵活。


如何运行上图的代码呢?


运行的结果跟继承Thread类的结果一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫川琴秀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值