栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java多线程】Thread的几个方法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java多线程】Thread的几个方法

目录

1. start()方法

2. run()方法

3. currentThread()方法

4. isActive()方法

5. sleep()方法

6. getId()方法


1. start()方法

导致此线程开始执行;Java虚拟机调用此线程的run()方法。

结果是两个线程同时运行:当前线程(从调用返回到start方法)和另一个线程(执行其run方法)。

不止一次启动线程是不合法的。 特别地,一旦线程完成执行就可能不会重新启动。

异常:IllegalThreadStateException - 如果线程已经启动。

// 源代码,定义
public synchronized void start() {
    
    if (threadStatus != 0)
        throw new IllegalThreadStateException();

    
    group.add(this);

    boolean started = false;
    try {
        start0();
        started = true;
    } finally {
        try {
            if (!started) {
                group.threadStartFailed(this);
            }
        } catch (Throwable ignore) {
        
        }
    }
}

2. run()方法

如果这个线程是使用单独的Runnable运行对象构造的,则Runnable对象的run方法;否则,此方法不执行任何操作并返回。

Thread的Thread应该覆盖此方法。

// 源代码,Java
public void run() {
    if (target != null) {
        target.run();
    }
}

3. currentThread()方法

该方法可返回代码段正在被哪个线程调用的信息。

// 方法的源代码定义
public static native Thread currentThread();

4. isActive()方法

测试线程是否处于活动状态。

【注】:活动状态,即线程已经启动且尚未终止。

// 源代码,定义
public final native boolean isAlive();

在使用isAlive(方法时,如果将线程对象以构造参数的方式传递给Thread对象进行start()启动时,运行的结果和前面示例是有差异的。造成这样的差异的原因还是来自于Thread.currentThread()和this的差异。

5. sleep()方法

在指定的毫秒数内让当前”正在执行的线程“休眠(暂停执行)。这个”正在执行的线程“是指this.currentThread()返回的线程。

// 源代码,定义
public static native void sleep(long millis) throws InterruptedException;

异常:

IllegalArgumentException - 如果 millis值为负数。

InterruptedException - 如果任何线程中断当前线程。 当抛出此异常时,当前线程的中断状态将被清除。

6. getId()方法

取得线程的唯一标识。

// 源代码,定义
public long getId() {
    return tid;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/287036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号