1.繼承Thread類,重寫該類的run()方法。java
package samTest; import java.util.Scanner; /** * Created by Sam on 2018-01-02. */ public class ThreadTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); for (int i = 0; i < 3; i++) { int flag = in.nextInt(); Thread t = new MyThread(flag); t.start(); System.out.println(Thread.currentThread().getName() + " " + i); } } } class MyThread extends Thread { private Integer threadFlag; public MyThread(Integer threadFlag) { this.threadFlag = threadFlag; } @Override public void run() { System.out.println(threadFlag); } }
2.實現Runnable接口,並重寫該接口的run()方法,該run()方法一樣是線程執行體,建立Runnable實現類的實例,並以此實例做爲Thread類的target來建立Thread對象,該Thread對象纔是真正的線程對象。ide
package samTest; import java.util.Scanner; /** * Created by Sam on 2018-01-02. */ public class ThreadTest { public static void main(String[] args) { Scanner in = new Scanner(System.in); for (int i = 0; i < 3; i++) { int flag = in.nextInt(); Runnable r = new MyRunnable(flag); Thread t = new Thread(r); t.start(); System.out.println(Thread.currentThread().getName() + " " + i); } } } class MyRunnable implements Runnable { private Integer threadFlag; public MyRunnable(Integer threadFlag) { this.threadFlag = threadFlag; } public void run() { System.out.println(threadFlag); } }