黑马程序员技术交流社区
标题: 大家帮忙看一下这个程序的运行结果 [打印本页]
作者: xiaochongbojue 时间: 2014-11-24 23:16
标题: 大家帮忙看一下这个程序的运行结果
- class MyThreadDemo implements Runnable{
- @Override
- public void run() {
- for (int i = 0; i < 50; i++) {
- System.out.println(Thread.currentThread().getName()+"正在运行!"+i);
- if(i == 25){
- try {
- new Thread(new MyThreadDemo(),"刘昭").join();
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
- }
- }
- public class DemoRe10 {
- public static void main(String[] args) {
-
- new Thread(new MyThreadDemo(),"刘昭").start();
- new Thread(new MyThreadDemo(),"章泽天").start();
- }
- }
复制代码
本来我觉的这个程序应该是死循环的啊,可是程序运行起来就好像是 join() 方法没有被执行似的。但是将 join() 方法改为 Start() 方法这个程序就确实变为死循环了,这是为什么呢。 join() 方法为什么没有将一个线程的运行加入进来呢??????
作者: yueyazhishang 时间: 2014-11-25 08:28
简单回答:开启多线程的步骤还记得不?
1、继承Thread类
子类覆写父类中的run方法,将线程运行的代码存放在run中。
建立子类对象的同时线程也被创建。
通过调用start方法开启线程。
2、实现Runnable接口
子类覆盖接口中的run方法。
通过Thread类创建线程,并将实现了Runnable接口的子类对象作为参数传递给Thread类的构造函数。
Thread类对象调用start方法开启线程
那么问题来了,开启线程哪家强?中国山东找start()。没错MyThreadDemo中你只是实例化了new Thread(new MyThreadDemo(),"刘昭"),但是并没有调用start,这也就是没有形成死循环的原因。
第二种方式是debug一下,任何时候调试程序这都是第一选择。
作者: xiaochongbojue 时间: 2014-11-25 10:11
嘿嘿,发现了。不过eclipse调试程序却是还不能完全掌握。谢谢你的回答啦
作者: yueyazhishang 时间: 2014-11-25 10:12
共同学习,共同进步
作者: .ヤ牧马人〃 时间: 2014-11-25 11:10
完了看不懂,,我们老师就说前期会点鼠标报异常就好:'(
作者: xiaochongbojue 时间: 2014-11-26 09:24
额,你们老师好慈祥啊:D
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |