线程池:有几个公共的线程组成,所以的对象都可以使用其中的线程。这样避免了资源浪费。
用execute()来启动线程。
import java.util.concurrent.*;
class ThreadPoolDemo
{
public static void main(String[] args)
{
ExecutorService pool = Executors.newCachedThreadPool();//创建线程池对象
MyTask t1 = new MyTask(5);
MyTask t2 = new MyTask(7);
MyTask t3 = new MyTask(8);
pool.execute(t1);//添加Runnable对象
pool.execute(t2);
pool.execute(t3);
pool.shutdown();
}
}
class MyTask implements Runnable
{
int n=10;
public MyTask(int n){ this.n=n;}
public void run(){
for(int i=0;i<n; i++)System.out.print(i);
}
}
Timer类用来重复执行某一任务
swing.Timer用来处理图形的,在图形界面中不允许某一线程刷新图形,必须都交给一指定线程执行。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.Timer;
class TimerSwing extends JFrame
{
Timer timer;
public void init()
{
setLayout(null);
setSize(400,100);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
timer = new Timer(1000, (e)->{
setTitle( new java.util.Date().toString());
});
timer.start();
}
public static void main(String[] args)
{
new TimerSwing().init();
}
}