• 自定义线程的创建方式


    /*
    自定义线程的创建方式:
    
    方式一 : 
        1. 自定义一个类继承Thread类。
        2. 重写Thread类的run方法,把自定义线程的任务代码写在run方法上。
        3. 创建Thread的子类对象,并且调用start方法启动一个线程。 
            
        注意:千万不要直接调用run方法,调用start方法的时候线程就会开启,线程一旦开启就会执行run方法中代码,如果直接调用
        run方法,那么就 相当于调用了一个普通的方法而已。
    
    方式二:
        1. 自定义一个类实现Runnable接口。
        2. 实现Runnable接口 的run方法,把自定义线程的任务定义在run方法上。
        3. 创建Runnable实现类对象。
        4. 创建Thread类 的对象,并且把Runnable实现类的对象作为实参传递。
        5. 调用Thread对象 的start方法开启一个线程。
    
    
    问题1: 请问Runnable实现类的对象是线程对象吗?
        Runnable实现类的对象并 不是一个线程对象,只不过是实现了Runnable接口 的对象而已。
        只有是Thread或者是Thread的子类才是线程 对象。
    
    问题2: 为什么要把Runnable实现类的对象作为实参传递给Thread对象呢?作用是什么?
        作用就是把Runnable实现类的对象的run方法作为了线程的任务代码去执行了。
    
    推荐使用: 第二种。 实现Runable接口的。 
    原因: 因为java单继承 ,多实现的。
    
    
    
     */
    
    public class Demo3 implements Runnable{
    
        @Override
        public void run() {
            /*System.out.println("this:"+ this);
            System.out.println("当前线程:"+ Thread.currentThread());*/
            for(int i = 0 ; i < 100 ; i++){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
        }
        
        public static void main(String[] args) {
            //创建Runnable实现类的对象
            Demo3 d = new Demo3();
            //创建Thread类的对象, 把Runnable实现类对象作为实参传递。
            Thread thread = new Thread(d,"狗娃");  //Thread类使用Target变量记录了d对象,
            //调用thread对象的start方法开启线程。
            thread.start();
            
            
            for(int i = 0 ; i < 100 ; i++){
                System.out.println(Thread.currentThread().getName()+":"+i);
            }
            
        } 
        
        /*
          Thread类 的run方法
          
         *  @Override
            public void run() {
                if (target != null) {
                    target.run();  //就相当于Runnable实现类的对象的run方法作为了Thread对象的任务代码了。
                }
            }
        */
    }
  • 相关阅读:
    linux目录文件与系统启动(1)系统目录简介
    linux常用命令
    linux命令行
    关于Xshell6无法连接虚拟机centOS7的解决方案
    远程连接服务器和查错
    ip、端口、协议、网关、DNS
    linux分区
    linux系统补丁更新 yum命令
    VMWare网络适配器的三种模式
    springboot 配置springmvc?
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6361665.html
Copyright © 2020-2023  润新知