• 创建线程的两种方式


    第一种:Thread

    Thread类代表线程类型。任何线程对象都是Thread类(子类)的实例。Thread类是线程的模板(封装了复杂的线程开启等操作,封装了操作系统的差异性),只要重写run方法即可实现具体线程。 

    Thread类创建线程

    创建一个具体线程,需要继承于Thread类,覆盖run方法(就是更新运行过程),实现用户自己的过程。

     class Person1 extends Thread{
           @Override
           public void run() {
                  for(int i=0;i<1000;i++){
                         System.out.println("你是谁呀!");
                  }
           }
     }

    这一种创建线程的方式存在一个弊端:线程与线程要干的事情耦合在一起。

    线程的启动

    创建线程实例,使用线程实例的strat()方法启动线程,启动以后线程会尽快的去并发执行run方法

    Person1 t1=new Person1();
    t1.start();

    Java虚拟机会去执行重写了的run方法

    第二种:Runable接口

    创建一个类实现Runable接口,重写run方法。以实现了Runable接口的类的实例对象作为创建Thread类对象的构造函数的参数。

    class Person1 implements Runnable{
           @Override//实现了Runable接口的run方法
           public void run() {
                  for(int i=0;i<1000;i++){
                         System.out.println("你是谁呀!");
                  }
           }
    }

    启动线程

    Thread t1 = new Thread(new Person1());
    t1.start();

    这种创建方式把线程和线程干的事分开了。

    t1.Start()执行完后,java虚拟机会尽快的去执行Thread类的run方法。

    Thread类的run方法源程序:

     @Override
     public void run() {
        if (target != null) {
            target.run();
        }
     }

    Target就是传进来的实现了Runable接口的类的实例对象。

    内部类实现创建线程

    new Thread(){
        public void run() {
            //线程处理逻辑
        };
    
    }.start();
    
    new Thread(new Runnable() {
        @Override
        public void run() {
          //线程处理逻辑
        }
    }).start();

     

  • 相关阅读:
    MySQL基础(一):检索数据
    Go基础(九):并发
    Go基础(八):反射
    Go基础(七):接口
    Go基础(六):方法
    Go基础(五):结构体
    Go基础(四):流程控制和函数
    Go基础(三):内置基础类型和一些技巧
    Go基础(二):变量和常量
    Go基础(一):命令行操作
  • 原文地址:https://www.cnblogs.com/qin-derella/p/6588379.html
Copyright © 2020-2023  润新知