黑马程序员技术交流社区
标题:
学过,有点忘了QAQ 多线程
[打印本页]
作者:
wjj410830911
时间:
2013-11-10 16:25
标题:
学过,有点忘了QAQ 多线程
public class 测试3 {
/**
* @param args
*/
public static void main(String[] args) {
MyRunnable mr = new MyRunnable();
//mr.start();
mr.run();
Thread t = new Thread();
t.start();
for(int x = 0; x < 100000; x++) {
System.out.println("bb");
}
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
for(int x = 0; x < 101000; x++) {
System.out.println("aaaaaaaaaaaaaaaa");
}
}
}
复制代码
我这个貌似没有一起执行啊?我记得aaa和bb是穿插着打印的
作者:
零下五度的水
时间:
2013-11-10 16:53
mr.start(); 为什么被注释了,就应该用这个
mr.run() 这个一直在占用主线程,后面的代码得等它跑完了才会继续
作者:
何丛
时间:
2013-11-10 17:28
线程有两种创建方式
1、继承自Thread类,重写run()方法,然后实例化对象,调用start()方法
2、实现Runnable接口,重写run()方法,然后创建Thread对象,并将该类的对象传给它,调用start()方法,如:Thread t = new Thread(实现了Runnable接口的类的对象);
你用的是第二种方法,创建了实现Runnable接口的类的对象却没有将它传给Thread,所以调用start()方法的时候调用的是Thread类的默认run()方法,所以只打印了main()方法中的bb
作者:
hurryup
时间:
2013-11-10 18:06
要想多线程同时执行,就必须用.start()方法,它是启动一个线程的意思。
jvm底层只是默认执行带main()方法的主线程,所以你那个.run方法只是线程要执行的功能代码,而实际上线程并未执行.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2