Java---创建线程的两种方式

一、继承Thread类:

package com.etc.demo;

class ThreadDemo extends Thread {

	public void run() {
		for(int i = 1; i <= 3; i++) {
			System.out.println("继承Thread类的线程在执行....."+i);
		}
	}
}

启动线程:调用Thread类的start()方法

package com.etc.demo;

public class TestThread { 
	public static void main(String args[]) { 
        ThreadDemo t2 = new ThreadDemo();
		t2.start();//启动新开辟的线程
		for(int i=1;i<=3;i++){
			System.out.println("主线程在执行......."+i);
		}
    }
}

执行结果:每次的执行结果可能不同

        主线程在执行.......1
	继承Thread类的线程在执行.....1
	继承Thread类的线程在执行.....2
	继承Thread类的线程在执行.....3
	主线程在执行.......2
        主线程在执行.......3
或者:
	主线程在执行.......1
	主线程在执行.......2
	主线程在执行.......3
	继承Thread类的线程在执行.....1
	继承Thread类的线程在执行.....2
	继承Thread类的线程在执行.....3

二、实现Runnable接口:

package com.etc.demo;

class RunnableDemo implements Runnable { 
	
	public void run() { 
		for(int i = 1; i <= 3; i++) { 
			System.out.println("实现Runnable接口的线程在执行....."+i);
		} 
	}
}
	

启动线程:

package com.etc.demo;

public class TestThread { 
	public static void main(String args[]) { 
		RunnableDemo r1 = new RunnableDemo();
		Thread t1 = new Thread(r1);
		t1.start();//启动新开辟线程,和主线程交替执行
		
		for(int i=1;i<=3;i++){
			System.out.println("主线程在执行....."+i);
		}
    }
}

执行结果:每次的执行结果可能不同

	主线程在执行.....1
	实现Runnable接口的线程在执行.....1
	实现Runnable接口的线程在执行.....2
	主线程在执行.....2
	实现Runnable接口的线程在执行.....3
	主线程在执行.....3
 或者:
	主线程在执行.....1
	实现Runnable接口的线程在执行.....1
	实现Runnable接口的线程在执行.....2
	实现Runnable接口的线程在执行.....3
	主线程在执行.....2
	主线程在执行.....3

注意:

run()仅仅是封装被线程执行的代码,直接调用是普通方法

start()首先启动了线程,然后由jvm调用线程的run()方法

public class TestThread { 
	public static void main(String args[]) { 
        RunnableDemo r1 = new RunnableDemo();
		r1.run();//没有启动新开辟的线程,等到run()方法执行完了再执行main()方法
		for(int i=1;i<=3;i++){
			System.out.println("主线程在执行......."+i);
		}
    }
}

执行结果:每次执行结果都一样

实现Runnable接口的线程在执行.....1
实现Runnable接口的线程在执行.....2
实现Runnable接口的线程在执行.....3
主线程在执行.......1
主线程在执行.......2
主线程在执行.......3

猜你喜欢

转载自blog.csdn.net/ZZ2713634772/article/details/81220557