线程初步(六)----匿名内部类的使用
来源:互联网 发布:网络用语 编辑:程序博客网 时间:2024/06/05 22:20
今天我们学习一波线程里内部类的使用我们先展示一下代码
/** * 使用匿名内部类 * @author lover * */public class InnerDemo {public static void main(String[] args) { //使用内部类创建一个线程对象 new Thread("Thread创建的线程"){ public void run(){ for(int i=0;i<=10;i++){ System.out.println(Thread.currentThread().getName()+"----->"+i); } } }.start(); //使用Runnable接口在主线程内创建一个线程对象 Runnable r=new Runnable (){ public void run(){ for(int i=0;i<=10;i++){ System.out.println(Thread.currentThread().getName()+"----->"+i); } } }; new Thread(r,"Runnable创建的线程").start(); //主线程 for(int i=0;i<=10;i++){ System.out.println(Thread.currentThread().getName()+"----->"+i); }}}
在代码中,我们在主类中创建了Thread类和Runnable接口(两个线程),使代码可以并发运行,我们来看一下输出的结果
Thread创建的线程----->0Runnable创建的线程----->0main----->0Runnable创建的线程----->1Thread创建的线程----->1Runnable创建的线程----->2main----->1Runnable创建的线程----->3Thread创建的线程----->2Runnable创建的线程----->4main----->2Runnable创建的线程----->5Thread创建的线程----->3Runnable创建的线程----->6main----->3Runnable创建的线程----->7Thread创建的线程----->4Runnable创建的线程----->8main----->4Runnable创建的线程----->9Thread创建的线程----->5Runnable创建的线程----->10main----->5Thread创建的线程----->6Thread创建的线程----->7main----->6Thread创建的线程----->8Thread创建的线程----->9Thread创建的线程----->10main----->7main----->8main----->9main----->10
接下来我们分析另一个匿名实例,我先贴一波代码
/** * 匿名内部类分析 * @author lover * */public class InnerDemo2 {public static void main(String[] args) { new Thread( new Runnable (){ public void run(){ System.out.println("Runnable run"); } } ){ public void run(){ System.out.println("Thread run"); } }.start();}}
从代码中我们可以看到我们先创建了一个Thread的子类对象,又向里边传了一个Runnable对象,这时候程序将会输出什么呢,大家可以猜一猜
好了,我公布下结果,这个程序运行之后输出的结果是
Thread run
为什么会是这样的结果呢,我们来具体分析一下首先,runnable对象传进Thread里边会进行判断,如果Runable有run方法则会执行run方法,如果没有则执行Thread里的run方法。在此程序中,我们是向Thread创建的子类传入的Runnable对象,子类已经不需要再去判断传入的Runnable对象是否有run方法,而是直接执行子类的对象。所以输出的是Thread子类对象的run,自然也就是Thread run。
阅读全文
0 0
- 线程初步(六)----匿名内部类的使用
- 内部类、匿名内部类的使用
- 匿名内部类的使用
- 匿名内部类的使用
- 匿名内部类的使用
- 匿名内部类的使用
- 匿名内部类的使用
- 匿名内部类的使用
- 安卓学习第十三天:大文件的IO,字符流,处理流,内部类,匿名内部类,线程初步
- 匿名内部类线程的写法
- JAVA笔记九(35-38 内部类、匿名内部类以及java的线程)
- 内部类的编码及使用,包括成员内部类,局部内部类,匿名内部类
- 线程、线程匿名内部类、解决线程不安全的方式
- java 内部类、匿名内部类、嵌套类的使用
- 内部类及匿名内部类的使用实例
- java静态内部类和匿名内部类的使用
- java中的内部类和匿名内部类的使用
- 内部类和匿名内部类的使用
- centos7上安装redis
- <arm开发板>屏蔽gec-6818开发板默认的智能家居界面
- logback日志配置
- 进程优先级
- PythonList旋转
- 线程初步(六)----匿名内部类的使用
- C# Virtual
- 更换ubuntu的apt-get源
- python基础教程[2]:复制文件及文件夹
- 【Keil】warning: #550-D: variable "activeTaskID" was set but never used
- Hibernate源码解析
- html 使用js动态添加表格
- Docker run 命令
- unity手动选择文件夹保存文件