如何在java中执行线程

Viv*_*mar 1 java multithreading

我有一个代码 -

public class ThreadOne
{
    public static void main(String[] args)
    {
        Thread1 th=new Thread1();
        Thread1 th2=new Thread1();
        th.start();
        th2.start();
        System.exit(1);
    }
}


class Thread1 extends Thread
{
    public void run()
    {
        for(int i=0;i<10;i++)
        {
            System.out.println(i);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道的是 -

  • 为什么上面的代码不打印任何东西?虽然我创建了2个线程并启动它们,但它没有打印任何东西.为什么?
  • 如果没有用户线程,例如说一个由许多方法组成的普通程序,并且在main()方法中调用每个方法,那么默认创建多少个线程,它是否取决于我们拥有的方法的数量,或者是有一个主线程负责调用所有方法,最后谁创建主线程,它是创建它的JVM吗?

che*_*ohi 5

System.exit(1);将终止当前运行的Java虚拟机.当你的程序退出时,你的线程也会死掉.

Thread是一部分Process,如果Process已经退出,那么所有线程都将被销毁.

Thread.join() 将等待线程运行完成.

public class ThreadOne
{
    public static void main(String[] args)
    {
        Thread1 th=new Thread1();
        Thread1 th2=new Thread1();
        th.start();
        th2.start();
        th.join();
        th2.join();
        System.exit(1);
    }
}


class Thread1 extends Thread
{
    public void run()
    {
        for(int i=0;i<10;i++)
        {
            System.out.println(i);
        }
    }
} 
Run Code Online (Sandbox Code Playgroud)