从上面对于线程有了一个基本的认识了,那么如何开启一个新的分支呢?
java实现多线程常用的有两种方式
继承Thread类、实现Runnable接口
实现线程的第一种方式:实现Runnable接口
public class TestThread1 {
public static void main(String args[]) {
Runner1 r = new Runner1();
Thread t = new Thread(r);
t.start();
for(int i=0; i<100; i++) {
System.out.println("Main Thread:------" + i);
}
}
}
class Runner1 implements Runnable {//Runner1是一个线程类
public void run() {
for(int i=0; i<100; i++) {
System.out.println("Runner1 :" + i);
}
}
}
start开启一个新的线程(通知cpu),会执行Runner1 中的run()
同时main()也会继续向下执行(这里不同于方法调用)
在cpu中显示的就是二者交替执行
如果不启动一个新的线程,直接调用run()—-这里就是方法调用了!!就只有一个main分支了
实现线程的第二种方式:继承Thread类
public class TestThread1 {
public static void main(String args[]) {
Runner1 r = new Runner1();
r.start();
for(int i=0; i<100; i++) {
System.out.println("Main Thread:------" + i);
}
}
}
class Runner1 extends Thread { //Runner1这里本来就是一个Thread类
public void run() {
for(int i=0; i<100; i++) {
System.out.println("Runner1 :" + i);
}
}
}
执行的结果也是交替执行,见上图。