for循环多线程执行_Java多线程的创建和状态|乐字节

大家好,我是乐字节的小乐,好看好学的Java干货又来了!上一篇我们说到了Java多线程的概念以及优缺点|乐字节,本文将接着说Java多线程的创建,以及多线程的状态。

一、创建线程

1、创建 Thread 的子类

创建: 继承 Thread +重写 run

启动: 创建子类对象 对象.start()

创建 Thread 子类的一个实例并重写 run 方法,run 方法会在调用 start()方法之后被执行,示例如下:

public 

2、实现 Runnable 接口(推荐)

面向接口编程,避免单继承局限

创建: 实现 Runnable +重写 run

启动:静态代理 Thread

a)、创建真实角色 实现类对象
b)、创建代理角色 Thread 对象+真实角色的引用
c)、代理角色.start()

此方式是新建一个实现了 java.lang.Runnable 接口的类的实例,实例中的方法可以被

线程调用。

缺点: 根据重写规则,run 方法不能对外声明异常,不能有返回值

public 

优点: 能声明异常,能有返回值 缺点: 编写复杂麻烦

public 

二、线程的状态及信息

1、五种状态

1)、新生状态: new
2)、就绪状态: runnable
3)、运行状态: running
4)、阻塞状态: blocked
5)、执行完毕: dead

e60017c84f81916ddd78c22aed0f8587.png

类似于运动员赛跑,

1)、新生状态:选出运动员
2)、就绪状态:走到起跑线,做好跑的动作,枪响后,不是马上就跑,得有反应时间。
3)、运行状态:反应完成后,开始跑
4)、阻塞状态:路边一个石头绊倒了,马上跑起来,嘟囔几句,踢踢石头, 不是马上跑,重新反应进入就 绪。
5)、终止状态:跑完了,结束了,慢慢的走几步停下来。

2、阻塞: sleep

模拟网络延时,每个对象 都有一把排他锁,不会释放锁

class 

3、终止

不要调用 stop destory 方法 ,太暴力,一盆冷水让其停止。

a、正常执行完毕,循环 次数已经到达

b、外部干涉

1)、线程中加入标识 -->属性
2)、线程体中 使用改标识 -->死循环
3)、对外提供改变改标识的方法 setXxx() terminate() a()...
4)、外部根据适当的时机调用该方法

4、当前线程

Thread.currentThread()

5、优先级

只代表概率,不代表绝对先后顺序

MIN_PRIORITY : 1

NORM_PRIORITY :5 默认优先级

MAX_PRIORITY :10

getPriority() setPriority()

关于多线程的创建和状态就介绍到这里,下次我们再说多线程的同步和线程通信,请关注乐字节,原创文章,转载请注明出处。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值