如果线程本身调用join()会发生什么

流形

从我在这里所阅读的内容来看,线程本身就加入了;

当join方法本身被调用时,它应该永远等待

我目前正在准备ocajp 8认证,为此正在经历转储,当我遇到这个问题时,我认为主要的问题应该永远等待。

     public class startinginconstructor extends Thread
    {
        private int x=2;
        startinginconstructor()
        {   
            start();
        }
        public static void main(String[] args) throws Exception
        {
        new startinginconstructor().makeitso(); 
        }
        public void makeitso() throws Exception
        {
            x=x-1;
            System.out.println(Thread.currentThread().getName()+" about to call join ");
            join();
            System.out.println(Thread.currentThread().getName()+" makeitso completed "); 

           //  above line shouldn't be executed (method shouldn't be completed as well )since it joined on itself..?

        }
        public void run()
        {
    System.out.println(Thread.currentThread().getName()+" run started ");
        x*=2;
    System.out.println(Thread.currentThread().getName()+" run about to complete ");  
        }
    }

程序以以下输出结束

main about to call join
Thread-0 run started
Thread-0 run about to complete
main makeitso completed

我是否错误地获得了线程永远等待的含义,还是我缺少了一些东西

注意:我知道不建议从构造函数启动线程。.这是转储中的确切问题,所以我只是粘贴了它(*不太确切,我放置了println语句以查看程序流程)

所罗门慢

在您的示例中,没有任何线程可以自我连接。

您的示例中的main()线程创建一个新线程,然后将其加入新线程。

不要将线程Thread对象(即代码的执行)与Java对象混淆。所有方法都属于同一个对象,但是它们在两个不同的线程中运行Thread

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果线程本身调用join()会发生什么

来自分类Dev

如果ThreadPool线程死亡,会发生什么?

来自分类Dev

如果ThreadPool线程死亡,会发生什么?

来自分类Dev

调用通知的线程会发生什么

来自分类Dev

C ++ 11:如果不为std :: thread调用join()会发生什么

来自分类Dev

如果线程在关键部分内死掉会发生什么?

来自分类Dev

如果Python线程在获取锁后死亡,会发生什么?

来自分类Dev

如果释放它的指针,线程会发生什么

来自分类Dev

如果我在无限循环中启动线程会发生什么?

来自分类Dev

调用exec()时,线程会发生什么情况?

来自分类Dev

使用可调用对象时主线程会发生什么

来自分类Dev

如果我多次调用C的read()会发生什么?

来自分类Dev

CommonJS是同步的,但是如果调用异步函数会发生什么

来自分类Dev

如果src和dst相同,调用StartCopyAsync会发生什么?

来自分类Dev

删除后指针本身会发生什么?

来自分类Dev

调用rangeOfCharacterFromSet会发生什么?

来自分类Dev

同步调用异步函数时被调用者的线程会发生什么

来自分类Dev

如果在其他线程仍在运行时调用exit(0),会发生什么情况?

来自分类Dev

如果线程试图获取它已经持有的锁,会发生什么?

来自分类Dev

如果线程在同步块内引发异常会发生什么

来自分类Dev

如果线程执行的函子被移动,会发生什么情况?

来自分类Dev

如果不再引用该对象,那么扩展Thread的“对象的线程”会发生什么?

来自分类Dev

以线程安全的方式从DLL写入文件-但是,如果许多程序使用此DLL会发生什么?

来自分类Dev

如果线程处于临界区或进入临界区会发生什么?

来自分类Dev

返回线程的run()后会发生什么?

来自分类Dev

当两个线程同时调用相同的静态方法时会发生什么?

来自分类Dev

当线程尝试同时调用静态和非静态同步方法时会发生什么?

来自分类Dev

当你调用在已经工作线程的方法会发生什么?

来自分类Dev

当几个线程试图调用相同的同步方法时会发生什么?

Related 相关文章

  1. 1

    如果线程本身调用join()会发生什么

  2. 2

    如果ThreadPool线程死亡,会发生什么?

  3. 3

    如果ThreadPool线程死亡,会发生什么?

  4. 4

    调用通知的线程会发生什么

  5. 5

    C ++ 11:如果不为std :: thread调用join()会发生什么

  6. 6

    如果线程在关键部分内死掉会发生什么?

  7. 7

    如果Python线程在获取锁后死亡,会发生什么?

  8. 8

    如果释放它的指针,线程会发生什么

  9. 9

    如果我在无限循环中启动线程会发生什么?

  10. 10

    调用exec()时,线程会发生什么情况?

  11. 11

    使用可调用对象时主线程会发生什么

  12. 12

    如果我多次调用C的read()会发生什么?

  13. 13

    CommonJS是同步的,但是如果调用异步函数会发生什么

  14. 14

    如果src和dst相同,调用StartCopyAsync会发生什么?

  15. 15

    删除后指针本身会发生什么?

  16. 16

    调用rangeOfCharacterFromSet会发生什么?

  17. 17

    同步调用异步函数时被调用者的线程会发生什么

  18. 18

    如果在其他线程仍在运行时调用exit(0),会发生什么情况?

  19. 19

    如果线程试图获取它已经持有的锁,会发生什么?

  20. 20

    如果线程在同步块内引发异常会发生什么

  21. 21

    如果线程执行的函子被移动,会发生什么情况?

  22. 22

    如果不再引用该对象,那么扩展Thread的“对象的线程”会发生什么?

  23. 23

    以线程安全的方式从DLL写入文件-但是,如果许多程序使用此DLL会发生什么?

  24. 24

    如果线程处于临界区或进入临界区会发生什么?

  25. 25

    返回线程的run()后会发生什么?

  26. 26

    当两个线程同时调用相同的静态方法时会发生什么?

  27. 27

    当线程尝试同时调用静态和非静态同步方法时会发生什么?

  28. 28

    当你调用在已经工作线程的方法会发生什么?

  29. 29

    当几个线程试图调用相同的同步方法时会发生什么?

热门标签

归档