您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
〖第9章:多线程〗_线程操作范例
发布时间:2020-12-21 14:57:06编辑:雪饮阅读()
需求:
设计两个类分别用Thread与Runnable继承或实现,两个类都可以通过String name与int time构造新线程名称和休眠时间,每个新线程开启时候都会按照该类提供的线程时间进行休眠。
Thread实现方式
class MyThread extends Thread{
private int time;
public MyThread(String name,int time){
super(name);
this.time=time;
}
public int getTime(){
return this.time;
}
public void run(){
try{
System.out.println(this.getName()+"休眠"+this.getTime()+"毫秒");
Thread.sleep(this.time);
}
catch(InterruptedException e){
System.out.println("休眠异常");
}
System.out.println("休眠结束");
}
}
public class Hello{
public static void main(String args[]){
MyThread m1=new MyThread("线程A",1000);
MyThread m2=new MyThread("线程B",1000);
MyThread m3=new MyThread("线程C",1000);
m1.start();
m2.start();
m3.start();
}
}
D:\>javac Hello.java
D:\>java Hello
线程A休眠1000毫秒
线程C休眠1000毫秒
线程B休眠1000毫秒
休眠结束
休眠结束
休眠结束
Thread实现的时候,因为Thread类本来就有单参数构造该单参数正好就是String name,那么只需要继承Thread类并覆盖构造中调用父级单参构造并扩展自己的休眠时间于子类
获取线程名称的方法也不用自己实现也在父级中有存在的。对于线程的开始start方法同样父级直接提供了,那么只需要在子类中实现run方法中进行休眠。
Runnable实现
class MyThread implements Runnable{
private int time;
private String name;
public MyThread(String name,int time){
this.name=name;
this.time=time;
}
public String getName(){
return this.name;
}
public int getTime(){
return this.time;
}
public void run(){
try{
System.out.println(this.getName()+"休眠"+this.getTime()+"毫秒");
Thread.sleep(this.time);
}
catch(InterruptedException e){
System.out.println("休眠异常");
}
System.out.println("休眠结束");
}
}
public class Hello{
public static void main(String args[]){
MyThread m1=new MyThread("线程A",1000);
MyThread m2=new MyThread("线程B",1000);
MyThread m3=new MyThread("线程C",1000);
new Thread(m1).start();
new Thread(m2).start();
new Thread(m3).start();
}
}
Runnable实现的时候由于是接口所以要implements并且父类不存在getName,所以getName和getTime都要自己实现,另外就是在启动线程的时候要依赖与Thread,这里Thread还有一个单参构造,它接收的单参就是Thread类的实例,所以这里就要将自己实现的类交给Thread的构造后才能start。
关键字词:java,线程
下一篇:【第9章:多线程】_同步与死锁