创建线程方法

方法一:继承Thread类

package cn.breeziness123.zhx;

/**
 *
 * 实现多线程的方法一:
 * 继承Thread类,缺点至于java的单继承机制,会影响后面的类继承于其他类时的代码改动
 * 优点在于创建线程简单
 */
public class ThreadDemo01 extends Thread {
    public  static  void  main(String[] args){
       ThreadDemo01 th1 = new ThreadDemo01();
       ThreadDemo01 th2 = new ThreadDemo01();
       th1.start();
       th2.start();
    }
    //必须重写run()方法,也称为线程体,在这个方法中进行需要在子线程中的操作
    @Override
    public void run() {
        super.run();
        for(int i = 0;i<10;i++){
            System.out.println(this.getName());
        }

    }
}

方法二:实现Runnable接口,并使用Thread类代理

package cn.breeziness123.zhx;

/**
 * 创建线程的方法二:实现Runnable
 * 推荐使用这个方法,这个方法需要借助代理的Thread对象来启动线程(调用Start()方法)
 * 可以使用lambda表达式简化代码
 */
public class ThreadDemo02 implements Runnable {
    public static  void main(String[] args){
    //实现Runnable接口的称为实现者
        ThreadDemo02 th1 = new ThreadDemo02();
        ThreadDemo02 th2 = new ThreadDemo02();
        //需要借助Thread对象才能调用start()方法,Thread对象在这里我们称为代理者,这里是典型的代理设计模式
        new Thread(th1).start(); //这里的对象只使用一次,所以可以使用匿名内部实现

        //也可以使用lambda表达式,简化内部类的写法,内部即为线程体的内容,实际是实现了run(),方法
        new Thread(()->{
            for (int i = 0 ;i<10;i++){
                System.out.println(Thread.currentThread().getName()+"---->"+i);
            }
        }).start();
    }

方法三:实现callable接口,属于JUC并发编程,基础这里没涉及

猜你喜欢

转载自blog.csdn.net/qq_40731414/article/details/86644563