线程行为有点困惑

吉恩

我已经在Thread中编写了一个基本代码,得到的输出令人惊讶。

public class ThreadImp implements Runnable{

    public static void main(String[] args) {
        ThreadImp threadImp = new ThreadImp();
        Thread t =new Thread(threadImp);
        t.setName("Fred");
        t.start();
        threadImp.run();
        t.run();
    
    }
    public void run(){
        System.out.println("Current Thread: "+ Thread.currentThread());
    }
}

我期望这里的输出是它将被打印

当前线程:线程[main,5,main]

当前线程:线程[Fred,5,main]

当前线程:线程[main,5,main]

我可以理解的结果是,我正在创建的线程只有一个,即线程Fred。其他两个对run方法的调用就像调用普通方法一样。

但是我不明白的是,有时当我执行相同的程序时,会得到以下输出。所以任何人都可以向我解释它为什么会这样。

当前线程:线程[main,5,main]

当前线程:线程[Fred,5,main]

马克·罗特·韦尔

您调用了Thread.run()(通常不应直接调用),并且如果Thread完成并清理了它,则不会执行任何操作

@Override
public void run() {
    if (target != null) {
        target.run();
    }
}

资料来源:Java 7更新79

target提供的可运行位置在哪里该字段target设置为null线程结束时的时间:

/**
 * This method is called by the system to give a Thread
 * a chance to clean up before it actually exits.
 */
private void exit() {
    if (group != null) {
        group.threadTerminated(this);
        group = null;
    }
    /* Aggressively null out all reference fields: see bug 4006245 */
    target = null;
    /* Speed the release of some of these resources */
    threadLocals = null;
    inheritableThreadLocals = null;
    inheritedAccessControlContext = null;
    blocker = null;
    uncaughtExceptionHandler = null;
}

资料来源:Java 7更新79

因此,确切的输出(包括订单,如果您收到两条或三条消息)取决于计时,调度等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

对 NSDecimalNumber 有点困惑?

来自分类Dev

Scala高阶函数有点困惑

来自分类Dev

星号:对扩展的“参数”有点困惑

来自分类Dev

对我的 if 循环没有运行有点困惑?

来自分类Dev

对信号量类有点困惑

来自分类Dev

我对Zend OPCache配置有点困惑

来自分类Dev

Fortran Coarrays:IFORT / GCC / Opencoarrays有点困惑

来自分类Dev

有点困惑,听着骨干模型上的变化

来自分类Dev

对方案中定义的缺点有点困惑

来自分类Dev

对该函数背后的数学有点困惑

来自分类Dev

我有点困惑的按位运算

来自分类Dev

返回内部函数的真假,我有点困惑

来自分类Dev

Ruby初学者,我有点困惑

来自分类Dev

我对 php 中的以下代码有点困惑

来自分类Dev

为什么我的循环没有结束有点困惑

来自分类Dev

返回指向const数据成员的const指针和'auto'关键字。有点困惑

来自分类Dev

C ++非静态数据成员初始化器,有点困惑

来自分类Dev

嗨,我有点困惑,我只是在linux中玩gdb而遇到

来自分类Dev

关于Django-Haystack的rebuild / update_index有点困惑

来自分类Dev

两个循环和move_uploaded_file,我有点困惑

来自分类Dev

C ++中的输入流。与cin unget()函数有点困惑

来自分类Dev

我在这里有点困惑使用三元

来自分类Dev

如何在JavaScript中使用reduce函数?我对使用它有点困惑

来自分类Dev

嵌套标题对在这里做什么有点困惑

来自分类Dev

使用 const 时出错,我对使用 const 有点困惑

来自分类Dev

我有点困惑是在运行时还是编译时自动分配内存

来自分类Dev

关于我的数据库 MySQL 的语法有点令人困惑

来自分类Dev

令人困惑的线程行为

来自分类Dev

与AVFoundation有点混淆

Related 相关文章

热门标签

归档