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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董月峰 高级黑马   /  2014-1-8 10:21  /  1092 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
* 练习:
* 创建两个线程,和主线程交替运行。
*/
//首先我自己写了一个,发现只运行main函数,不运行Test1,2类。菜13楼主因为一直用eclipse,所以以为是这个原因,但是用cmd运
//行之后结果还是这样,只运行主函数。但是cmd运行后文件里面多了个Test1.class文件只是 dos里面没显示,求解为啥
class Test1 extends Thread
{
        private String name;
        Test1(String name)
        {
                this.name=name;
        }
        public void run1()
        {
                for(int i=1;i<33;i++)
                        System.out.println(name+"run----1"+i);
        }
}
/*
class Test2 extends Thread
{
        public void run2()
        {
                for(int i=1;i<33;i++)
                        System.out.println("run-----2"+i);
        }
}
*/
class ThreadTest
{
        public static void main(String[] args)
        {
                Test1 t1=new Test1("1-1");
                t1.start();
                Test1 t2=new Test1("2-2");
                t2.start();
                for(int i=1;i<33;i++)
                        System.out.println("run-----main"+i);
        }
}

Dos线程.jpg (76.29 KB, 下载次数: 58)

Dos线程.jpg

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

4 个回复

倒序浏览
run1改成run
回复 使用道具 举报 1 0
  1. class Test1 extends Thread
  2. {
  3.         private String name;
  4.         Test1(String name)
  5.         {
  6.                 this.name=name;
  7.         }
  8.         public void run()//复写方法不能改方法名
  9.         {
  10.                 for(int i=1;i<33;i++)
  11.                         System.out.println(name+"run----1"+i);
  12.         }
  13. }
  14. /*
  15. class Test2 extends Thread
  16. {
  17.         public void run()//复写run方法不能改人家的名字改了就无法复写
  18.         {
  19.                 for(int i=1;i<33;i++)
  20.                         System.out.println("run-----2"+i);
  21.         }
  22. }
  23. */
  24. class ThreadTest
  25. {
  26.         public static void main(String[] args)
  27.         {
  28.                 Test1 t1=new Test1("1-1");
  29.                 t1.start();
  30.                 Test1 t2=new Test1("2-2");
  31.                 t2.start();
  32.                 for(int i=1;i<33;i++)
  33.                         System.out.println("run-----main"+i);
  34.         }
  35. }
复制代码

代码都帮你改好了 你运行试试,
主要是你复写方法的时候名字不能改掉人家的 不然就不叫复写方法了 是创建一个新方法了
懂?

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
错误太明显了,一般线程的创建有两种方式:
继承方式:
class MyThread extends Thread
{
public void run(){
复写run()方法
}
}
public static void main(String[] args){
new Thread().start();
}

还有一种是实现Runnable接口

class MyRunnable implements Runnable
{
//重写run方法
public void run(){}
}


public static void main(String[] args){
new Thread(new MyRunnable()).start();
}

你的复写run方法不能改名,你要是想区别打印结果明白,你可以在方法体内写区分的代码
希望对你有帮助

评分

参与人数 1技术分 +1 收起 理由
田磊阳 + 1

查看全部评分

回复 使用道具 举报
因为java只支持单继承,不支持多继承,如果多继承就会出现调用不明的现象就是你这种情况,因此我建议你使用线程的第二种方法implements Runnable接口这种方法就不会出现这种情况了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马