前言
体能状态先于精神状态,习惯先于决心,聚焦先于喜好。
声明线程对象 必须 覆盖重写 run() 方法
声明线程对象 必须 覆盖重写 run() 方法
Thread t2=new Thread() {
@Override
public void run() {
super.run();
System.out.println("输出了内容:2-1");
}
};
启动线程时 thread.run() 和thread.start()的区别
start()会启动一个新线程,并在新线程中运行run()方法-这样就是异步执行了
run() 会在当前线程中执行run(),而并不会启动新线程,也就说,多线程变成了单线程,run()会当作普通函数
run()可以重复调用多次,start()只能调用一次,否则抛出异常.
代码举例
声明两个线程,分别使用 run() 和 start() 查看区别
- 代码
public class RunTest {
public static void main(String[] args) {
//第一个线程
Thread t=new Thread() {
@Override
public void run() {
super.run();
System.out.println("输出了内容:1-1");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("输出了内容:1-2");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
};
//第二个线程
Thread t2=new Thread() {
@Override
public void run() {
super.run();
System.out.println("输出了内容:2-1");
}
};
//run() 会在当前线程中执行run(),而并不会启动新线程,也就说,多线程变成了单线程
t.run();
t2.run();
System.out.println("分割线");
//start()会启动一个新线程,并在新线程中运行run()方法-这样就是异步执行了
t.start();
t2.start();
}
}
- 结果
输出了内容:1-1
输出了内容:1-2
输出了内容:2-1
分割线
输出了内容:1-1
输出了内容:2-1
输出了内容:1-2