public class ThMain {
public static void main(String[] args) {
Th1 ht1 = new Th1("aaaaaaaaaaa");
Thread demo1 = new Thread(ht1);
Th1 ht2 = new Th1("B");
Thread demo2 = new Thread(ht2);
demo1.start();
demo2.start();
System.out.println("END");
}
}public class Th1 implements Runnable {
private String name; public Th1(String name) {
this.name = name;
} @Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(name + "运行 " + i);
}
}
}public class Th2 implements Runnable {
private String name; public Th2(String name) {
this.name = name;
} @Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(name + "运行 " + i);
}
}
}main函数里为什么System.out.println("END");这句的输出顺序不是在最后,只有ht1 和ht2开启了线程啊,怎么让它一直在最后输出
解决方案 »
- 当程序中没有main()方法时。。
- 数组错误
- 急!!java编译无误,运行时无法显示加载的图片
- 将3个Button,然后用setBound设置按钮为纵向排放,用什么方法??放到一个jPanle
- ArrayList是不是一能存不同数据类型的数组?
- 大家来看看这段代码,我就是找不错错误?
- 在JCREATOR中编译通过,却不能够调试 ,出错:Exception occurred: java.lang.ClassNotFoundException
- Java里面可以镶嵌HTML语句吗?支持marquee这个标记吗?100分送
- 很简单的问题。
- awt事件的疑问
- 一个奇怪的问题,为什么我画不出图片来?
- 关于Menu bar的问题
public static void main(String[] args) throws InterruptedException {
Th1 ht1 = new Th1("aaaaaaaaaaa");
Thread demo1 = new Thread(ht1);
Th1 ht2 = new Th1("B");
Thread demo2 = new Thread(ht2);
demo1.start();
demo2.start();
demo1.join();
demo2.join();
System.out.println("END");
}
}
demo2.start();//启动线程2
System.out.println("END");
你在打印END之前启动两个线,但是你不能确定这两个线程一定会在打印END之前执行,所以END不一定会在最后。你可以加一句Thread.sleep(5000);只要sleep的时间够长,那么就会在最后了。
加一检测,如下:public class ThMain {
public static void main(String[] args) {
Th1 ht1 = new Th1("aaaaaaaaaaa");
Thread demo1 = new Thread(ht1);
Th1 ht2 = new Th1("B");
Thread demo2 = new Thread(ht2);
demo1.start();
demo2.start();
//加一检测
while(demo1.isAlive()||demo2.isAlive())
{
}
System.out.println("END");
}
}