這邊介紹一個java多線程的一個小案例,這邊是用ScheduledExecutorService類實現一個線程池的任務調度,這裏面主要寫一個MyTimer類繼承了Thread,然後設置一個靜態任務調度的線程池容納線程數,然後在MyTimer裏面寫幾個內部類去實現Runnable接口,最後面在重寫的Run方法中週期調用以上的內部類所在的線程。
package com.ThreadTest;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class MyTimer extends Thread {
private static ScheduledExecutorService scheduleExec = Executors.newScheduledThreadPool(20);
public class println1 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("======println2======with 3Seconds and period 2seconds");
}
}
public class println2 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("======println=2=====with 3 Seconds and period 5seconds");
}
}
public class println3 implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println("======println3=======with delay 10 seconds");
}
}
@Override
public void run() {
// TODO Auto-generated method stub
scheduleExec.scheduleWithFixedDelay(new println1(), 3, 3, TimeUnit.SECONDS);
scheduleExec.scheduleWithFixedDelay(new println2(), 3, 5, TimeUnit.SECONDS);
scheduleExec.schedule(new println3(),10, TimeUnit.SECONDS);
}
}
package com.ThreadTest;
public class TestMain {
public static void main(String[] args) {
MyTimer myTimer = new MyTimer();
myTimer.start();
}
}