黑马程序员技术交流社区
标题:
多线程程序运行问题
[打印本页]
作者:
董月峰
时间:
2014-1-8 10:21
标题:
多线程程序运行问题
/*
* 练习:
* 创建两个线程,和主线程交替运行。
*/
//首先我自己写了一个,发现只运行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, 下载次数: 57)
下载附件
2014-1-8 10:21 上传
作者:
汪洋大海
时间:
2014-1-8 10:24
run1改成run
作者:
零敢
时间:
2014-1-8 10:40
class Test1 extends Thread
{
private String name;
Test1(String name)
{
this.name=name;
}
public void run()//复写方法不能改方法名
{
for(int i=1;i<33;i++)
System.out.println(name+"run----1"+i);
}
}
/*
class Test2 extends Thread
{
public void run()//复写run方法不能改人家的名字改了就无法复写
{
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);
}
}
复制代码
代码都帮你改好了 你运行试试,
主要是你复写方法的时候名字不能改掉人家的 不然就不叫复写方法了 是创建一个新方法了
懂?
作者:
IT人
时间:
2014-1-8 14:14
错误太明显了,一般线程的创建有两种方式:
继承方式:
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方法不能改名,你要是想区别打印结果明白,你可以在方法体内写区分的代码
希望对你有帮助
作者:
@翱翔@
时间:
2014-1-8 14:54
因为java只支持单继承,不支持多继承,如果多继承就会出现调用不明的现象就是你这种情况,因此我建议你使用线程的第二种方法implements Runnable接口这种方法就不会出现这种情况了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2