有时通过内部类来将线程代码隐藏在类中将会很有用
public class InnerThread1 {
private int countDown = 5;
private Inner inner;
private class Inner extends Thread{
public Inner(String name) {
super(name);
start();
}
@Override
public void run() {
try {
while(true){
System.out.println(this);
if(--countDown==0)return;
sleep(10);
}
} catch (Exception e) {
// TODO: handle exception
}
}
public String toString(){
return getName() + ":" + countDown;
}
public void newMethod(){
System.out.println("其它方法需要访问的新方法!");
}
}
public InnerThread1(String name){
inner = new Inner(name);
inner.newMethod();
}
public static void main(String[] args) {
new InnerThread1("caogen");
}
}
InnerThread1创建了一个扩展Thread的匿名内部类,并且在构造器中创建了这个内部类的一个实例。如果内部类具有你在其它方法中需要访问的新方法。其实我不知道这样做有多大意义
public class InnerThread2 {
private int countDown = 5;
private Thread t;
public InnerThread2(String name){
t = new Thread(name){
@Override
public void run() {
try {
while(true){
System.out.println(this);
if(--countDown==0)return;
sleep(10);
}
} catch (Exception e) {
// TODO: handle exception
}
}
public String toString(){
return getName() + ": " + countDown;
}
};
t.start();
}
public static void main(String[] args) {
new InnerThread2("caogen");
}
}
InnerThread2展示了可替换的方式:在构造器中创建了一个匿名的Thread子类,并且将其向上转型为Thread引用t。如果类中的其它方法需要访问t,那它们可以通过Thread接口来实现。