Java 线程创建方法之一——实现Runnable接口、匿名内部类写法

线程的创建方式——实现Runnable接口

多线程是很有用的,我们在进程中创建线程的方式有三种:

  1. 直接定义一个类继承线程类Thread。重写run()方法,创建线程对象
    调用线程对象的start()方法启动线程。
  2. 定义一个饯程任务类实现Runnable接口,重写run()方法, 创建践程任务对象,把
    线程任务对象包装成线程对象,调用线程对 象的start()方法启动线程。
  3. 实现Callable接口(拓展)。

Thread 的构造器

public Thread(){}
public Thread(String name){}
public Thread(Runnable target){}
public Thread(Runnable target,String name){}

实现Runnable接口的方式。

  1. 创建一个线程任务类实现Runnable接口。
  2. 重写run()方法。
  3. 创建一个线程任务对象。
  4. 把线程任务对象包装成线程对象
  5. 调用线程对象的start()方法启动线程。
public class ThreadDemo2 {
    public static void main(String[] args) {
        //3.创建一个线程任务对象(不是线程对象,只是执行线程任务的)
        Runnable target = new MyRunnable();
        //4.把线程任务对象包装成线程
        //Thread t1 = new Thread(target);
        Thread t2 = new Thread(target,"线程1号");

        //5.调用start方法
        t2.start();

        //主线程加个任务
        for (int i = 0; i < 10 ;i++){
            System.out.println(Thread.currentThread().getName()+"=>"+i);
        }

    }
}

//1.创建一个线程任务类实现runnable接口
class MyRunnable implements Runnable{
    //2.重写run方法
    @Override
    public void run() {
        for (int i = 0 ;i < 10 ; i++){
            System.out.println(Thread.currentThread().getName()+"=>"+i);
        }
    }
}

优点:

  1. 线程任务类只是实现了Runnable接口,可以继续继承其他类,而且可以继续实现其他的功能
  2. 同一个线程任务对象可以被包装成多个线程对象
  3. 适合多个相同的程序代码的线程去共享同一个资源
  4. 实现解棍操作,代码可以被多个线程共享,线程任务代码和线程独立。

匿名内部类写法

public class ThreadDemo3 {
    public static void main(String[] args) {

        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 10; i++) {
                    System.out.println(Thread.currentThread().getName() + "=>" + i);
                }
            }
        });
        t.start();


        //主线程加个任务
        for (int i = 0; i < 10; i++) {
            System.out.println(Thread.currentThread().getName() + "=>" + i);
        }

    }
}

你可能感兴趣的:(Java,java,多线程,thread)