設計一個線程類。可以產生3個線程對象,並分別設置3個線程的休眠時間,具體如下:
線程 | 休眠 |
---|---|
線程A | 休眠10秒 |
線程B | 休眠20秒 |
線程C | 休眠30秒 |
從之前的學習應該可以知道,線程的實現有兩種方式,一種是繼承Thread類,另一種是實現Runnable接口。而且在類中應該存在保存線程名稱和休眠時間的屬性。
- 實現一–繼承Thread 類
【使用Thread類實現】
class MyThread extends Thread
{
private int time;
public MyThread(String name,int time){
super(name);//設置線程名稱
this.time=time;//設置休眠時間
}
public void run(){
try
{
Thread.sleep(this.time);//指定休眠時間
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"線程,休眠"+this.time+"毫秒");
}
}
public class ExecDemo01
{
public static void main(String args[])
{
MyThread my1=new MyThread("線程-A",10000);
MyThread my2=new MyThread("線程-B",20000);
MyThread my3=new MyThread("線程-C",30000);
my1.start();
my2.start();
my3.start();
}
}
運行結果:
線程-A線程,休眠10000毫秒
線程-B線程,休眠20000毫秒
線程-C線程,休眠30000毫秒
以上程序利用了Thread類的特點,所以不用單獨設置name屬性。
- 實現二–實現Runnable接口
如果使用Runnable接口實現多線程,則不像繼承Thread類一樣可以直接使用Thread類的name屬性,需要在類中單獨定義一個name屬性來保存線程的名稱。
【通過Runnable接口實現】
class MyThread implements Runnable
{
private String name;
private int time;
public MyThread(String name,int time){
this.name=name;
this.time=time;
}
public void run(){
try
{
Thread.sleep(this.time);
}
catch (Exception e)
{
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"線程,休眠"+this.time+"毫秒");
}
}
public class ExecDemo02
{
public static void main(String args[])
{
MyThread my1=new MyThread("線程-A",10000);
MyThread my2=new MyThread("線程-B",20000);
MyThread my3=new MyThread("線程-C",30000);
new Thread(my1).start();
new Thread(my2).start();
new Thread(my3).start();
}
}
運行結果:
Thread-0線程,休眠10000毫秒
Thread-1線程,休眠20000毫秒
Thread-2線程,休眠30000毫秒