您的位置:首页 > 其它

覆盖Thread的start()函数后的注意事项

2009-10-16 16:01 225 查看
package com.tju;
public class ThreadDemo extends Thread
{
private int a = 1;
private static int count = 0;
@Override
public void start()
{
super.start();// 确保线程创建,调用run()方法
// start()方法被覆盖后,主线程执行这句话
// Thread类的静态方法返回当前线程的引用,然后进行获取线程的名字等操作
System.out.println(currentThread().getName() + ":第" + (++count)
+ "个线程启动");
}
@Override
public void run()
{
System.out.println(currentThread().getName() + ": a = " + a);
try
{
sleep(1000);
} catch (InterruptedException e)
{
e.printStackTrace();
}
}
public static void main(String[] args)
{
ThreadDemo thread1 = new ThreadDemo();
ThreadDemo thread2 = new ThreadDemo();
thread1.start();
thread2.start();
}
}


注:

1.两个线程共享变量a,即两个线程拥有共同的数据空间,进程不是这样。

2.若覆盖了start()方法,则要先调用super.start()方法,执行Thead类的start()方法,否则子线程不会被启动
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: