java 内部类 线程_java多线程基本概述(十四)——Thread内部类的几种写法
importjava.util.concurrent.TimeUnit;//命名匿名類-Thread
classInnerThread1 {private int countDown = 5;privateInner inner;private class Inner extendsThread{
Inner(String name){super(name);
start();
}
@Overridepublic voidrun() {try{while (true){
System.out.println(this);if(--countDown==0)return;
sleep(10);
}
}catch(InterruptedException e){
System.out.println("interrupted");
}
}
@OverridepublicString toString() {return getName()+": "+countDown;
}
}publicInnerThread1(String name){
inner= newInner(name);
}
}//命名內(nèi)部類-Runnable
classInnerRunnable1 {private int countDown = 5;privateInner inner;private class Inner implementsRunnable{
Thread t;
Inner(String name){
t= new Thread(this, name);
t.start();
}
@Overridepublic voidrun() {try{while (true){
System.out.println(this);if(--countDown==0) return;
TimeUnit.SECONDS.sleep(10);
}
}catch(InterruptedException e){
System.out.println("interrupted");
}
}
@OverridepublicString toString() {return t.getName()+": "+countDown;
}
}publicInnerRunnable1(String name){
inner= newInner(name);
}
}//匿名內(nèi)部類-Thread
classInnerThread2 {private int countDown = 5;public InnerThread2(finalString name){newThread(name){
@Overridepublic voidrun() {try{while (true){
System.out.println(this);if(--countDown==0)return;
sleep(10);
}
}catch(InterruptedException e){
System.out.println("interrupted");
}
}
@OverridepublicString toString() {return getName()+": "+countDown;
}
}.start();
}
}//匿名內(nèi)部類-Runnable2
classInnerRunnable2 {private int countDown = 5;public InnerRunnable2(finalString name){new Thread(newRunnable() {
@Overridepublic voidrun() {try{while (true){
System.out.println(this);if(--countDown==0)return;
TimeUnit.SECONDS.sleep(10);
}
}catch(InterruptedException e){
System.out.println("interrupted");
}
}
@OverridepublicString toString() {return Thread.currentThread().getName()+": "+countDown;
}
}, name).start();
}
}//a separate methid to run somoe code as task
classThreadMethod{private int countDown = 5;privateThread thread;privateString name;publicThreadMethod(String name) {this.name =name;
}public voidrunTask(){if (null==thread){newThread(name){
@Overridepublic voidrun() {try{while (true){
System.out.println(this+"");if(--countDown==0) return;
sleep(10);
}
}catch(InterruptedException e){
System.out.println("interrupted");
}
}
@OverridepublicString toString() {return Thread.currentThread().getName()+": "+countDown;
}
}.start();
}
}
}public classTest2{public static voidmain(String[] args) {new InnerThread1("InnerThread1");new InnerRunnable1("InnerRunnable1");new InnerThread2("InnerThread2");new InnerRunnable2("InnerRunnable2");new ThreadMethod("ThreadMethod");
}
}
總結(jié)
以上是生活随笔為你收集整理的java 内部类 线程_java多线程基本概述(十四)——Thread内部类的几种写法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在sql server数据库中快速删除记
- 下一篇: cp 命令详解