import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class ManyProject { public static void main(String[] args) { //創建方法1的對象 Mythread_thread firstThread=new Mythread_thread(); firstThread.start();//開啟線程 System.out.println("********************************"); //創建方法2的對象 Mythread_run secondThread=new Mythread_run(); //創建Thread類對象,把方法2類對象當做Thread類的構造方法的參數傳遞進去 Thread second=new Thread(secondThread); second.start();//Thread對象開啟新的線程 System.out.println("********************************"); /* //main線程方法 for (int i = 0; i < 10; i++) { System.out.println("main線程報數:"+i); }*/ } } /*創建新的線程:方法1==>繼承Thread類*/ class Mythread_thread extends Thread{//1、繼承Thread @Override public void run() { //2、實現run方法 // for (int i = 0; i < 10; i++) {//3、自定義執行語句 //System.out.println("繼承Thread類 --線程報數:"); Timer timer = new Timer(); //表示在3秒之后開始執行,並且每2秒執行一次 timer.schedule(new MyTask2(),3000,2000); // } } } /*創建新的線程:方法2==>實現Runnable接口*/ class Mythread_run implements Runnable{//1、自定義類實現Runnable接口 @Override public void run() {//2、重寫run方法 Timer timer = new Timer(); //表示在3秒之后開始執行,並且每2秒執行一次 timer.schedule(new MyTask1(),3000,2000); } } /** * 類描述:這個類代表一個定時任務 * @author xiezd * 自定義定時任務,繼承TimerTask * */ class MyTask1 extends TimerTask{ //在run方法中的語句就是定時任務執行時運行的語句。 public void run() { System.out.println("Hello!! 現在是:"+new Date().toLocaleString()); } } class MyTask2 extends TimerTask{ //在run方法中的語句就是定時任務執行時運行的語句。 public void run() { System.out.println(" 現在是:"+new Date().toLocaleString()); } }
運行結果:
兩個進程同時運行,輸出的結果並不是按照某個固定的順序進行的,是隨機產生的,無規律可言。
參考博客:https://blog.csdn.net/zyj0813/article/details/78345617