小编use*_*836的帖子

在子线程完成执行之前主线程将退出吗?

在子线程完成执行之前主线程将退出吗?

我读了2篇文章

http://www.cs.mtu.edu/~shene/NSF-3/e-Book/FUNDAMENTALS/thread-management.html

在上面的文章中,在"线程终止"段中,它在Red中声明"如果父线程终止,它的所有子线程也会终止".

http://www.roseindia.net/java/thread/overview-of-thread.shtml

在上面的文章中,该页面的最后一行指出"main()方法执行可以完成,但程序将继续运行,直到所有线程完成其执行."

我付费他们是矛盾的.如果我错了,请专家指正.

在我的程序中,使用Main方法的程序调用2个线程的构造函数.在各个线程的构造函数中,我有start()方法.

     TestA  A = new TestA("TestA");
     TestB  B = new TestB("TestB");

     public TestA(String name) {
    System.out.println(name);
    t = new Thread(this);
    t.start();
}
Run Code Online (Sandbox Code Playgroud)

我想知道会发生什么,主线程在子线程完成执行之前终止?如果是这样,孩子仍然会线程,继续执行?

我尝试运行该程序,有时候即使主线程退出,所有子线程也会完成执行.在2个线程中,我正在处理一些文件.在testA线程A中,单独的1个文件有时没有得到处理.但很多时候,所有的文件都得到处理,我没有任何问题.

java

16
推荐指数
1
解决办法
3万
查看次数

我们应该明确杀死线程吗?

我在主程序中创建了三个线程。我在每个线程中都有for循环。在run()方法中执行语句后,每个线程都会自动被其自身破坏或杀死。正确?我的理解正确吗?

是否有任何Java标准参考文献提到无需显式杀死线程,而是它自己执行。我一直在尝试阅读和浏览许多文章。但仍无法获得100%的信心。

如果这里的任何专家都能回答并帮助我,我将不胜感激。提前致谢!!!

public class Demo {
    TestA A = new TestA("TestA",threadAList);
    TestA B = new TestB("TestB",threadBList);
    TestA C = new TestC("TestC",threadCList);
}

class TestA implements Runnable {
    Thread t;

    public TestA(String name,List threadAList) {
        System.out.println(name);
        this.threadAList = threadAList;
        t = new Thread(this);
        t.start();
    }

    public void run() {
        try {
            System.out.println("TestA Thread started");
        }
        catch(Exception e) {
            e.printStackTrace(log);
            doing some action to move the faild file to a failure folder    
        }
        finally {
            log.close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

2
推荐指数
1
解决办法
2830
查看次数

标签 统计

java ×2

multithreading ×1