java小问题来看看啊

来源:百度知道 编辑:UC知道 时间:2024/05/04 04:51:14
class MuliThread
{
public static void main(String[] args)
{
FirstThread first=new FirstThread();
new Thread(first).start();
new Thread(first).start();
new Thread(first).start();
new Thread(first).start();
int index=0;
while(true)
{
System.out.println("current:"+Thread.currentThrea().getName());

}
}
}
class FirstThread implements Runnable
{
int index=0;
public void run()
{
while(true)
{
System.out.println(Thread.currentThread().getName()+":"+index++);
}
}
}
我就是弄不明白这里是怎么调用的run()??
为什么可以这样调用呢?
new Thread(first).start();
还有这一句,为什么要这样写?

你问的问题就是JAVA内部机制的问题了,这里当你调用start()方法,java虚拟机是会自动的去执行run方法,实际上你可以把它理解成run方法的驱动,因此,你在编程的时候不要随意的重写start()这个方法。这也体现了JAVA的封装性。这个你现在记住就可以了,今后在数据库编程的时候你也会遇见这样的情况的。

你的类实现了Runnable 类,它必须定义一个run 的无参数方法以保证线程运行。

start
public void start()使该线程开始执行;Java 虚拟机调用该线程的 run 方法。
结果是两个线程并发地运行;当前线程(从调用返回给 start 方法)和另一个线程(执行其 run 方法)。

多次启动一个线程是非法的。特别是当线程已经结束执行后,不能再重新启动。