zoukankan      html  css  js  c++  java
  • 39.线程的实现方式二

    线程实现方式二:

        1.自定义一个类实现runnable接口

            class Thread implements Runnable 

            查看源代码,我们可以知道Thread实现了runnable接口

            runnable中只有一个run抽象类

        2.实现run方法,把自定义线程的任务定义在run方法里面

        3.创建一个runnable实现类对象

        4.创建Thread方法,并把runnable实现类对象作为实参传过去

            Thread的构造方法:

                Thread(Runnable target)        分配新的 Thread 对象。

                Thread(Runnable target ,String name) 分配新的 Thread 对象并这个可以给线程一个名字

        5.并用Thread方法的start方法开启一个线程线程

            start方法不是静态的,要实例化对象

        疑问1:runnable的实现类是线程类吗?

            不是,只有Thread和Thread的子类才是线程对象

            rannable的实现类只是是实现了rannable接口的对象而已

        疑问2:为什么我们调用Thread的start方法可以执行runnable接口的实现类的run方法呢?

            源代码如下:

    Thread类的构造方法
        public Thread(Runnable target, String name) {
            init(null, target, name, 0);
        }
        Thread类的run方法
        public void run() {
            if (target != null) {
                target.run();
            }
        }
        Thread类的target成员变量
        private Runnable target;

          原来,然后当我们调用Thread的start方法的时候,就调用了Thread的run方法,

          而我们传递一个runnable实现类的对象,然后Thread的run方法会调用runnable实现类的run方法

    下面是实现runnable接口的实例代码: 

    public class Demo7 implements Runnable {
        
        @Override
        public void run() {
            for (int i = 0; i < 50; i++) {
                System.out.println(Thread.currentThread().getName()+i);
            }
            
        }
        public static void main(String[] args) {
            Demo7 demo = new Demo7();
            Thread thread = new Thread(demo,"狗娃");
            thread.run();
            thread.start();
            for (int i = 0; i < 50; i++) {
                System.out.println(Thread.currentThread().getName()+i);
            }
        }
        
        
    }

    最后总结一下:

       因为java是单继承多实现,所以我们最好用第二个方式创建线程对象,

      如果出现多语句操作同一个共享资源的话,我们最好用构造代码块,

      最后我们在用多线程的时候,我们应该多避免死锁的现象

  • 相关阅读:
    How to install Lineage Os ROM on any Android device [2 methods]
    2017 年不可错过的开发工具 Top 50
    (OK) 华为全网通 honor 5x
    (OK) (solved) How restore /cust partition
    (OK) 华为全网通 honor 5x
    (OK) 华为全网通 honor 5x
    Chris Lattner
    (OK) 救砖:华为全网通 honor 5x
    (OK) Linux 平台 CUST.zip 制作方法
    (OK) Linux 下解包华为固件包UPDATE.APP
  • 原文地址:https://www.cnblogs.com/zjdbk/p/8969124.html
Copyright © 2011-2022 走看看