A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. class MyThreadDemo implements Runnable{

  2.         @Override
  3.         public void run() {
  4.                 for (int i = 0; i < 50; i++) {
  5.                         System.out.println(Thread.currentThread().getName()+"正在运行!"+i);
  6.                         if(i == 25){
  7.                                 try {
  8.                                         new Thread(new MyThreadDemo(),"刘昭").join();
  9.                                 } catch (InterruptedException e) {
  10.                                         e.printStackTrace();
  11.                                 }
  12.                         }
  13.                 }
  14.         }
  15. }

  16. public class DemoRe10 {
  17.         public static void main(String[] args) {
  18.                
  19.                 new Thread(new MyThreadDemo(),"刘昭").start();
  20.                 new Thread(new MyThreadDemo(),"章泽天").start();
  21.         }
  22. }
复制代码


本来我觉的这个程序应该是死循环的啊,可是程序运行起来就好像是  join() 方法没有被执行似的。但是将 join() 方法改为 Start() 方法这个程序就确实变为死循环了,这是为什么呢。 join() 方法为什么没有将一个线程的运行加入进来呢??????

5 个回复

倒序浏览
简单回答:开启多线程的步骤还记得不?
1、继承Thread
子类覆写父类中的run方法,将线程运行的代码存放在run中。
建立子类对象的同时线程也被创建。
通过调用start方法开启线程。
2、实现Runnable接口
子类覆盖接口中的run方法。
通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数。
Thread类对象调用start方法开启线程

       那么问题来了,开启线程哪家强?中国山东找start()。没错MyThreadDemo中你只是实例化了new Thread(new MyThreadDemo(),"刘昭"),但是并没有调用start,这也就是没有形成死循环的原因。

第二种方式是debug一下,任何时候调试程序这都是第一选择。


回复 使用道具 举报
yueyazhishang 发表于 2014-11-25 08:28
简单回答:开启多线程的步骤还记得不?
1、继承Thread类子类覆写父类中的run方法,将线程运行的代码存放在r ...

嘿嘿,发现了。不过eclipse调试程序却是还不能完全掌握。谢谢你的回答啦
回复 使用道具 举报
xiaochongbojue 发表于 2014-11-25 10:11
嘿嘿,发现了。不过eclipse调试程序却是还不能完全掌握。谢谢你的回答啦

共同学习,共同进步
回复 使用道具 举报
完了看不懂,,我们老师就说前期会点鼠标报异常就好:'(
回复 使用道具 举报
.ヤ牧马人〃 发表于 2014-11-25 11:10
完了看不懂,,我们老师就说前期会点鼠标报异常就好

额,你们老师好慈祥啊:D
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马