注意:普通线程之间的执行相互独立,具体执行顺序需要看cpu的调度。
方式一、 继承Thread类
class CreateThread1 extends Thread {
@Override
public void run() {
System.out.println("子线程一开始。。。。。。");
for (int i = 0; i < 10; i++) {
System.out.println("子线程一: " + i);
}
System.out.println("子线程一结束。。。。。。");
}
}
方式二、实现Runnable接口(推荐使用此种方法)
class CreateThread2 implements Runnable {
@Override
public void run() {
System.out.println("子线程二开始。。。。。。");
for (int i = 1; i < 10; i++) {
System.out.println("子线程二: " + i);
}
System.out.println("子线程二结束。。。。。。");
}
}
测试
public class TestDemo{
public static void main(String[] args) {
System.out.println("主线程开始。。。。。。");
Thread thread1 = new Thread(new CreateThread1());
Thread thread2 = new Thread(new CreateThread2());
thread1.start();
thread2.start();
System.out.println("主线程结束。。。。。。");
}
}
方式三、匿名内部类
public class ThreadDemo {
public static void main(String[] args) {
System.out.println("主线程开始。。。。。。");
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("子线程三开始。。。。。。");
for (int i = 0; i < 10; i++) {
System.out.println("子线程三: " + i);
}
System.out.println("子线程三结束。。。。。。");
}
});
thread.start();
System.out.println("主线程结束。。。。。。");
}
}