使用内部类来将线程隐藏在类中的几种方法
来源:互联网 发布:打车软件司机版 编辑:程序博客网 时间:2024/05/24 02:05
class InnerThread1{ private int countDown=5; private Inner inner; private class Inner extends Thread{ Inner(String name) { super(name); start(); } @Override public void run() { while(true){ try { System.out.println(this); if(--countDown==0) return; TimeUnit.MILLISECONDS.sleep(10); } catch (InterruptedException e) { System.out.println("interrupted"); } } } public String toString(){ return getName()+":"+countDown; } } public InnerThread1(String name){ inner=new Inner(name); }}class InnerThread2{ private int countDown=5; private Thread t; public InnerThread2(String name){ t=new Thread(name){ @Override public void run() { while(true){ try { System.out.println(this); if(--countDown==0) return; TimeUnit.MILLISECONDS.sleep(10); } catch (InterruptedException e) { System.out.println("sleep() interrupted"); } } } public String toString(){ return getName()+":"+countDown; } }; t.start(); }}class InnerRunnable1{ private int countDown=5; private Inner inner; private class Inner implements Runnable{ Thread t; Inner(String name){ t=new Thread(this,name); t.start(); } @Override public void run() { try { while(true) { System.out.println(this); if (--countDown == 0) return; TimeUnit.MILLISECONDS.sleep(10); } } catch (InterruptedException e) { System.out.println("sleep() interrupted"); } } public String toString(){ return t.getName()+": "+countDown; } } public InnerRunnable1(String name){ inner=new Inner(name); }}class InnerRunnable2{ private int countDown=5; private Thread t; public InnerRunnable2(String name){ t=new Thread(new Runnable() { @Override public void run() { while(true){ System.out.println(this); if(--countDown==0) return; try { TimeUnit.MILLISECONDS.sleep(10); } catch (InterruptedException e) { System.out.println("sleep() interrupted"); } } } public String toString(){ return Thread.currentThread().getName()+": "+countDown; } },name); }}class ThreadMethod{ private int countDown=5; private Thread t; private String name; public ThreadMethod(String name){ this.name=name; } public void runTask(){ if(t==null){ t=new Thread(name){ @Override public void run() { while(true){ System.out.println(this); if(--countDown==0) return; try { TimeUnit.MILLISECONDS.sleep(10); } catch (InterruptedException e) { System.out.println("sleep() interrupted"); } } } public String toString(){ return getName()+": "+countDown; } }; t.start(); } }}public class ThreadVariations { public static void main(String[] args){ new InnerThread1("InnerThread1"); new InnerThread2("InnerThread2"); new InnerRunnable1("InnerRunnable1"); new InnerRunnable2("InnerRunnable2"); new ThreadMethod("ThreadMethod").runTask(); }}
0 0
- 使用内部类来将线程隐藏在类中的几种方法
- 如何通过使用匿名内部类来将线程代码隐藏在类中
- java 内部类来将线程 代码隐藏在类中
- java在方法中的匿名内部类
- 内部类访问外部类方法中的参数-使用final
- Java:使用匿名内部类在方法内部定义并启动线程
- Java:使用匿名内部类在方法内部定义并启动线程
- JAVA中的内部类--方法内部类
- 五种内部类形式将线程隐藏于类中
- 使用线程池与内部类实现方法异步
- Java 中的方法内部类
- Java 中的方法内部类
- Java 中的方法内部类
- Java中的方法内部类
- Java 中的方法内部类
- Java 中的方法内部类
- Java 中的方法内部类
- 内部类的使用1--隐藏实现
- 导入ShareSDK遇到的一个坑,和导入解析
- 「只差程序员」为什么会招黑?
- Dining 【dicnic 求最大流】+【拆点 建模】(解匹配问题)
- HDFS的新方向:Ozone对象存储
- MySQL之查询基础
- 使用内部类来将线程隐藏在类中的几种方法
- 指针
- Oracle游标的使用
- vim常用命令
- ctags使用详解
- Android与JavaWeb服务器交互教程(1)-搭建环境
- 霍夫曼编码算法与实现
- toj-1036-火车进站
- JavaScript动画1-速度动画