黑马程序员技术交流社区
标题:
这段代码该怎么看
[打印本页]
作者:
Miss小强
时间:
2013-4-24 09:25
标题:
这段代码该怎么看
本帖最后由 Miss小强 于 2013-5-12 10:26 编辑
new Thread(new Runnable() {
@Override
public void run() {
while (true) {
//22222222
System.out.println(Thread.currentThread().getName()
+ "thread ...");
}
}
}) {
@Override
public void run() {
while (true) {
//1111
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+ "haha");
}
}
}.start();
复制代码
我知道结果是执行11111处的代码,该怎么解析呢?
作者:
wangyougu010
时间:
2013-4-24 09:53
class Test{
public static void main(String[] args) {
new Thread(new Runnable() {//通过Runnable内部类来创建线程,重写run方法
@Override
public void run() {
while (true) {//死循环
//22222222
System.out.println(Thread.currentThread().getName()
+ "thread ...");
}
}
}) //标号(1)
{
@Override
public void run() {
while (true) {
//1111
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()
+ "haha");
}
}
}.start();//标号(2) 启动线程
}
}
我加了一些注释,里面有两个标号,如果你把调用线程放在标号(1)的位置,那么执行的是第一个run方法的内容,如果放在标号(2)的位置,也就是你这个程序,执行的就是第二个run方法的内容,至于这种两个run方法的,我还真没见过,你问下老师吧
作者:
Miss小强
时间:
2013-4-24 14:27
问老师,还是发帖子问大家把,论坛上高手如云。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2