题目:
设计一个线程操作类,要求可以产生3个线程对象,并可以分别设置3个线程的休眠时间,具体如下:
(1)线程A,休眠10s
(2)线程B,休眠20s
(3)线程C,休眠30s。
解答:
1.使用Thread实现:
package book;
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(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"线程,休眠"+this.time+"毫秒。");
}
}
public class JiOu{
public static void main(String args[]) {
MyThread mt1=new MyThread("线程A",1000);
MyThread mt2=new MyThread("线程B",2000);
MyThread mt3=new MyThread("线程C",3000);
mt1.start();
mt2.start();
mt3.start();
}
}
2.通过Runnable接口实现:
package book;
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(InterruptedException e) {
e.printStackTrace();
}
System.out.println(this.name+"线程,休眠"+this.time+"毫秒。");
}
}
public class JiOu{
public static void main(String args[]) {
MyThread mt1=new MyThread("线程A",1000);
MyThread mt2=new MyThread("线程B",2000);
MyThread mt3=new MyThread("线程C",3000);
new Thread(mt1).start();
new Thread(mt2).start();
new Thread(mt3).start();
}
}
观察比较以上两种方法可以发现,继承Thread类可以直接使用Thread类中的name属性,而Runnable接口则需要单独定义一个name属性以保存线程名称。