zoukankan      html  css  js  c++  java
  • 匿名内部类方式实现

    通过继承Thread类的子类或者实现Runnable接口的匿名内部类方式启动线程:

    package com.roocon.thread.t2;
    
    public class Demo3 {
        public static void main(String[] args) {
            /* new Thread().start();
            1.表示调用一个Thread类的start方法来启动一个线程*/
    
            /* new Thread(){
                2.在上面的基础上添加{}是表示,它是Thread的一个子类
            }.start();*/
    
            /*new Thread(){
                public void run(){
                  3.在这个子类中重写run方法
                }
            }.start();*/
    
            //匿名内部类的第一种方式
            new Thread(){
                public void run(){
                    System.out.println("thread1 start....");
                }
            }.start();
    
            /*new Thread(new Runnable() {
                @Override
                public void run() {
                    同理,这里{}是用来修饰Runnable,也就是,它实现了Runnable接口,重写它的run方法。
                }
            }).start();*/
    
            //匿名内部类的第二种方式
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("thread2 start....");
                }
            }).start();
        }
    }

    输出结果:

    thread1 start....
    thread2 start....

    思考: 如果同时使用这两种匿名内部类方式实现,是调用睡的呢?

    package com.roocon.thread.t2;
    
    /**
     * Created by Administrator on 2017/12/7.
     */
    public class Demo3 {
        public static void main(String[] args) {
           
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("runnable...");
                }
            }){
                public void run() {
                    System.out.println("sub");
                }
            }.start();
        }
    }

    输出结果:

    sub

    对以上代码的解释:

    在代码中,很明显,有一个子类thread继承了Thread,通过子类thread可以启动线程;同时,这个子类thread构造函数中又传入了Runnable接口的实现类,它重写了runnable方法。最终调用谁,取决于多态的思想。既然Thread类本身子类已经重写了runnable方法,就会优先调用它自己的方法,而不会再去调用子类中传递进入的Runnable参数重写的runnable方法了。

    对多态的思想还不够深入,有待继续学习!

    作者:凌晨六点半
    出处:http://www.cnblogs.com/sunnyDream/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。 如果您认为这篇文章还不错或者有所收获,您可以通过右边的“打赏”功能 打赏我一杯咖啡【物质支持】,也可以点击右下角的【好文要顶】按钮【精神支持】,因为这两种支持都是我继续写作,分享的最大动力!

  • 相关阅读:
    利用dockerfile定制镜像
    发布Docker 镜像到dockerhub
    Docker 停止容器
    133. Clone Graph
    132. Palindrome Partitioning II
    131. Palindrome Partitioning
    130. Surrounded Regions
    129. Sum Root to Leaf Numbers
    128. Longest Consecutive Sequence
    127. Word Ladder
  • 原文地址:https://www.cnblogs.com/sunnyDream/p/7997393.html
Copyright © 2011-2022 走看看