主方法关闭后线程如何运行?

TruePS:

这是我的两节课:

public class Firstclass {
    public static void main(String args[]) throws InterruptedException {
        System.out.println("Main start....");
        Secondclass t1 = new Secondclass();
        t1.setName("First Thread");
        Secondclass t2 = new Secondclass();
        t2.setName("Second Thread");
        t1.start();
        t2.start();
        System.out.println("Main close...");
    }
}

public class Secondclass extends Thread {
    @Override
    public void run() {
        try {
            loop();
        } catch(Exception e) {
            System.out.println("exception is" + e);
        }
    }

    public void loop() throws InterruptedException {
        for(int i = 0; i <= 10; i++) {
            Thread t = Thread.currentThread();
            String threadname = t.getName();
            if(threadname.equals("First Thread")) {
                Thread.sleep(1000);
            } else {
                Thread.sleep(1500);
            }
            System.out.println("i==" + i);   
        }
    }
}

现在,当我运行时Firstclass,输出为:

Main start....
Main close...
i==0
i==0
i==1
i==1
i==2
i==3
i==2
i==4
i==3
i==5
i==6
i==4
i==7
i==5
i==8
i==9
i==6
i==10
i==7
i==8
i==9
i==10

我的第一个问题是:我想知道为什么即使main方法已完成,两个线程仍在运行

我的第二个问题是:谁能向我解释方法join之间的区别是什么synchronized

旧的预算案:

您的main线程未关闭-

      // ...
      System.out.println("Main close...");
      // <--- Your main method is here while all the other threads complete (sort of).
     }

在问题的第二部分- join之间没有任何联系synchronized他们几乎是相反的。

  • join -等待线程完成后再继续。
  • synchronized -只有一个线程可以进入此处,所有其他线程都必须等待。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

让线程在主窗体关闭后运行,而不必等待线程完成

文档关闭后如何具有事件或运行方法?

运行方法完成后,如何清理线程?

关闭后如何重用线程池

关闭QT GUI后如何停止线程

子线程结束后如何在主线程中运行方法?

PyQt线程在窗口关闭后仍在运行

播放后如何运行cvlc关闭

列表填充后如何运行线程?

在Qt中关闭主窗口后,如何返回信息?

处理异常错误后如何防止主窗体关闭?

run()方法完成执行后,线程会自动关闭吗?

关闭项目后线程仍然退出,如何将其杀死?

所有线程完成运行后,如何运行代码?

如何在主节点失败或实例关闭后恢复主节点?

关闭主窗口后,为什么我的应用程序仍然运行?

主类完成后,执行器线程继续运行

如何从内部关闭线程?

如何使用后台线程关闭(检测到按键时)运行循环的主线程?

如何在线程运行Python Selenium时从Tkinter关闭线程

如何配置apcupsd在服务器关闭后让UPS运行?

运行测试后如何关闭Android SDK模拟器

终端关闭后,如何让Google Compute Engine继续运行?

即使关闭终端后如何运行ReactJS的npm start?

关闭终端后,如何在后台运行python程序?

关闭终端后如何保持应用程序运行?

命令成功运行后如何使终端自动关闭?

Android-在活动被关闭后,服务如何继续运行?

redux saga通道关闭后如何运行同步代码