二、线程的创建
创建线程主要有四种方式:
- 通过继承Thread类来进行创建
- 通过实现Runnable接口进行创建
- 通过callable接口进行创建
- 通过线程池来进行创建
1.Thread创建线程
◆自定义线程类继承Thread类
◆重写run()方法,编写线程执行体
◆创建线程对象,调用start()方法启动线程
示例:
public class TestThread {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
class MyThread extends Thread {
@Override
public void run() {
System.out.println("线程创建成功!");
}
}
运行结果:

注意:一定要用start()方法来开启线程,而不是直接调用run()方法,直接调用run()方法是不能开启线程的。

代码示例:
当线程调用的是run()方法时,只会有一个线程执行:
public class TestRun extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("我还能学~~" + i);
}
}
public static void main(String[] args) {
TestRun tr = new TestRun();
tr.run();
for (int i = 0; i < 5; i++) {
System.out.println("学不动了~~" + i);
}
}
}
执行结果:

可以看出先把run()方法中的循环执行完,之后才执行main方法中的循环。
当代码变成start()方法调用时,结果就不一样了
public class TestRun extends Thread {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println("我还能学~~" + i);
}
}
public static void main(String[]<