JAVA单排日记-2020/1/18-1-多线程_创建多线程

1.创建多线程的第一种方式

  1. 创建一个Thread子类
  2. 子类中重写run方法,设置线程任务
  3. 主程序中创建Thread的子类对象
  4. 调用Thread中的star方法,开启多线程

线程1:

public class Thread01 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i <3; i++) {
            System.out.println("线程1");
        }
    }
}

线程2:

public class Thread02 extends Thread {
    @Override
    public void run() {
        for (int i = 0; i <3; i++) {
            System.out.println("线程2");
        }
    }
}

主程序:

public class Demo01Thread {
    public static void main(String[] args) {
        Thread thread01 = new Thread01();
        Thread thread02 = new Thread02();

        thread01.start();
        thread02.start();
    }
}

在这里插入图片描述

检验多线程的好处:一个线程停止不会影响其他线程

import java.util.Objects;

public class Thread01 extends Thread {
    @Override
    public void run() {
        Objects.requireNonNull(null);
        for (int i = 0; i <3; i++) {
            System.out.println("线程1");
        }
    }
}

在这里插入图片描述

2.多线程的运行原理

在这里插入图片描述

3.多线程内存图解

在这里插入图片描述

4.Thread类中常用方法

  • 获取线程名称
  1. getName()
  2. currentThread()
public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println(getName());
    }
}
public class Demo01 {
    public static void main(String[] args) {
        Thread one = new MyThread();
        one.start();
    }
}

在这里插入图片描述

public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println(currentThread().getName());
    }
}
public class Demo01 {
    public static void main(String[] args) {
        new MyThread().start();
        new MyThread().start();
        new MyThread().start();
    }
}

在这里插入图片描述

  • 设置线程名称
  1. setName()
  2. 子类中创建带参构造方法
public class MyThread extends Thread {
    @Override
    public void run() {
        System.out.println(currentThread().getName());
    }
}
public class Demo01 {
    public static void main(String[] args) {
        Thread one = new MyThread();
        one.setName("线程1");
        one.start();
    }
}

在这里插入图片描述

public class MyThread extends Thread {
    public MyThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        System.out.println(currentThread().getName());
    }
}
public class Demo01 {
    public static void main(String[] args) {
        Thread one = new MyThread("线程2");
        one.start();
    }
}

在这里插入图片描述

  • 正在执行的线程暂停指定毫秒数sleep
public class Demo03 {
    public static void main(String[] args) throws InterruptedException {
        for (int i = 0; i <30; i++) {
            System.out.println(i);
            Thread.sleep(1000);
        }
    }
}

在这里插入图片描述

5.创建多线程的第二种方式

  • 步骤
  1. 创建一个Runnable接口的实现类
  2. 在实现类中重写Runnable接口的run()方法
  3. 主程序中创建一个Runnable接口的实现类对象
  4. 创建Thread类对象,构造方法中放入Runnable接口的实现类对象
  5. 调用Thread中的star方法,开启多线程
public class ImpRunnable01 implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i <3; i++) {
            System.out.println(Thread.currentThread().getName()+"--->"+i);
        }
    }
}
public class DemoRunnable {
    public static void main(String[] args) {
        Runnable run = new ImpRunnable01();

        Thread one = new Thread(run);
        Thread two = new Thread(run);

        one.start();
        two.start();
    }
}

在这里插入图片描述

  • 优点
    在这里插入图片描述

6.匿名内部类实现多线程的创建(程序的简化)

public class Demo04 {
    public static void main(String[] args) {
        Thread one = new Thread(){
            @Override
            public void run() {
                for (int i = 0; i <4; i++) {
                    System.out.println(getName()+"--->"+i);
                }
            }
        };

        one.start();
    }
}

在这里插入图片描述

public class Demo05 {
    public static void main(String[] args) {
        Runnable one = new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i <4; i++) {
                    System.out.println(Thread.currentThread().getName()+"-->"+i);
                }
            }
        };
        
        new Thread(one).start();
    }
}

在这里插入图片描述

发布了90 篇原创文章 · 获赞 1 · 访问量 2045

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/104036403