java学习线程篇之多线程的常用操作方法

java学习线程篇之多线程的常用操作方法

1. 线程的命名与取得

所有的线程程序的执行,每一次都是不同的运行结果,因为它会根据自己的情况进行资源抢占。所以如果要想区分每一个线程,就必须依靠线程的名字。对于线程的名字在启动之前进行定义,不建议更改已经启动的线程的名称或为不同的线程设置相同名称。

如果要想进行线程名称的操作,可以使用Thread类的如下方法:

  1. 构造方法
Thread(Runnable target, String name) 
  1. setName方法,利用final定义,表示不能被覆写
public final void setName(String name)
public final String getName()

对于线程名字的操作会出现一个问题,这些方法是属于Thread类里面的,可是如果换回到线程类(Runnable子类),这个子类里面并没有继承Thread类,如果要想取得线程的名称,那么能够取得的就是当前执行本方法的线程名字。所以在Thread类里面提供了一个方法:

  • 取得当前线程对象:
    在这里插入图片描述

如果在实例化Thread类对象的时候没有为其设置名字,那么会自动的进行编号命名,也就是保证线程对象命名不重复。

原来主方法就是一个线程(main线程),那么所有在方法上创建的线程实际上都可以将其表示为子线程。

线程实际上一直都存在,可是进程去哪里了呢?

每当使用java命令去解释一个程序类的时候,对于操作系统而言都相当于启动了一个新的进程,而main只是这新进程上的一个子线程而已。

提问:每一个JVM进程启动的时候至少启动几个线程?

两个。

  • main线程,程序的主要执行以及启动子线程;
  • gc线程:负责垃圾收集。

2. 线程的休眠

所谓的线程休眠就是让线程的执行速度稍微变慢一点。休眠的方法:

public static void sleep(long millis,
                         int nanos)
                  throws InterruptedException

在这里插入图片描述
默认情况下,在休眠时如果设置了多个线程对象,那么所有的线程对象将一起进入run()方法。所谓的一起进入是因为先后顺序实在太短了,但实际上是有区别的。

3. 线程优先级

所谓的优先级指的是越高的优先级,越有可能先执行。

在Thread类里面提供有以下两个方法进行优先级操作:

  • 设置优先级
public final void setPriority(int newPriority)

在这里插入图片描述

  • 取得优先级
public final int getPriority()

设置和取得优先级的返回值都是int类型,对于此内容有三种取值:

在这里插入图片描述
在这里插入图片描述
提问:主线程的优先级是多少?

在这里插入图片描述
主线程属于中等优先级。

4. 总结

  1. Thread.currentThread()可以取得当前线程类对象;
  2. Thread.sleep()主要是休眠,感觉多个线程是一起休眠,但实际上是有先后顺序的;
  3. 优先级越高的线程对象越有可能先执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

就是二二二二婷

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

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

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

打赏作者

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

抵扣说明:

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

余额充值