day20Java-Thread-多线程实现方式2实现Runnable接口

博客
Java-(高级)

文章目录

        • 多线程实现方式2实现Runnable接口
        • 匿名内部类的格式实现多线程

多线程实现方式2实现Runnable接口

方式2:实现Runnable接口

步骤:
  		A:自定义类MyRunnable实现Runnable接口
  		B:重写run()方法
  		C:创建MyRunnable类的对象
  		D:创建Thread类的对象,并把C步骤的对象作为构造参数传递

代码演示

public class MyRunnableDemo {
    public static void main(String[] args) {
        //创建MyRunnable对象
        MyRunnable my = new MyRunnable();

        //创建Thread类的对象,并把C步骤的对象作为构造参数传递
        //Thread(Runnable target)
        Thread t1 = new Thread(my);
        Thread t2 = new Thread(my);
        //设置线程对象名称
        t1.setName("疾风剑豪");
        t2.setName("影流之主");
        //启动线程
        t1.start();
        t2.start();

        //Thread(Runnable target, String name)
        Thread t3 =new Thread(my,"至高之拳");
        Thread t4 =new Thread(my,"法外狂徒");
        //设置线程对象名称
        //启动线程
        t3.start();
        t4.start();
    }
}

自定义类实现Runnable接口

public class MyRunnable implements  Runnable {
    @Override
    public void run() {
        for (int x = 0; x <5 ; x++) {
            // 由于实现接口的方式就不能直接使用Thread类的方法了,但是可以间接的使用
            System.out.println(Thread.currentThread().getName()+"-"+x);
        }
    }
}

结果:

至高之拳-0
至高之拳-1
至高之拳-2
至高之拳-3
至高之拳-4
疾风剑豪-0
疾风剑豪-1
疾风剑豪-2
疾风剑豪-3
疾风剑豪-4
法外狂徒-0
法外狂徒-1
法外狂徒-2
法外狂徒-3
法外狂徒-4
影流之主-0
影流之主-1
影流之主-2
影流之主-3
影流之主-4

匿名内部类的格式实现多线程

new 类名或者接口名() {
  			重写方法;
  		};
本质:是该类或者接口的子类对象。
// 继承Thread类来实现多线程
public class ThreadDemo {
    public static void main(String[] args) {
        //匿名实现多线程方式1
        new Thread() {
            @Override
            public void run() {
                for (int x = 0; x < 10; x++) {
                    System.out.println(Thread.currentThread().getName() + "-" + x);
                }
            }
        }.start();

        //匿名实现多线程方式2实现Runnable接口来实现多线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int x = 0; x < 10; x++) {
                    System.out.println(Thread.currentThread().getName() + "-" + x);
                }
            }
        }) {
        }.start();

        //匿名实现多线程方式3(该方式是没什么用.可能面试会问)
        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int x = 0; x < 10; x++) {
                    System.out.println("hello" + x);
                }
            }
        }) {
            @Override
            public void run() {
                for (int x = 0; x < 10; x++) {
                    System.out.println("hello" + x);//打印的是Thread里面的
                }
            }
        }.start();
    }
}

结果:

Thread-1-0
Thread-0-0
Thread-1-1
Thread-1-2
Thread-1-3
Thread-1-4
Thread-1-5
Thread-1-6
Thread-1-7
Thread-1-8
Thread-1-9
Thread-0-1
Thread-0-2
Thread-0-3
Thread-0-4
Thread-0-5
Thread-0-6
Thread-0-7
Thread-0-8
Thread-0-9
hello0
hello1
hello2
hello3
hello4
hello5
hello6
hello7
hello8
hello9

你可能感兴趣的:(JavaSE)