继承Thread实现只能一个run只能运行一次
继承Runnable实现可以将一个Runnable多次放入线程,从而实现一个成员同时多次运行。
class FileTransThread extends Thread{
private String filename;
public FileTransThread(String name) {
filename=name;
}
public void run() {
System.out.println("transfer"+" "+filename);
try {
sleep(1000);
}catch(Exception e) {}
System.out.println(filename+" "+"transfer sucessfully!");
}
}
class FileTransRunnable implements Runnable{
private String filename;
public FileTransRunnable(String name) {
filename=name;
}
public void run() {
System.out.println("transfer"+" "+filename);
try {
Thread.sleep(1000);
}catch(Exception e) {}
System.out.println(filename+" "+"transfer sucessfully!");
}
}
public class MyCode {
public static void main (String[] args) {
FileTransThread ft1=new FileTransThread("hhh");
FileTransThread ft2=new FileTransThread("ggg");
FileTransThread ft3=new FileTransThread("xxx");
ft1.start();
ft2.start();
ft3.start();
FileTransRunnable ft4=new FileTransRunnable("iii");
FileTransRunnable ft5=new FileTransRunnable("yyy");
FileTransRunnable ft6=new FileTransRunnable("ttt");
Thread th1=new Thread(ft4);
Thread th2=new Thread(ft5);
Thread th3=new Thread(ft6);
Thread th4=new Thread(ft4);
th1.start();
th2.start();
th3.start();
th4.start();
}
}

本文通过实例对比了Java中Thread类与Runnable接口的使用。解释了继承Thread类创建的线程只能运行一次run()方法,而实现Runnable接口的对象可以被多个线程重复使用,展示了一次性线程与可复用任务的不同。
1843

被折叠的 条评论
为什么被折叠?



