美文网首页java多线程编程
2018-04-18 Java 多线程编程实战-线程创建的两种方

2018-04-18 Java 多线程编程实战-线程创建的两种方

作者: 李2牛 | 来源:发表于2018-04-18 20:06 被阅读0次

多线程的创建方式

  1. 定义 Thread 类的子类创建
/**
 * @author: kent
 * @date: 2018/4/18 09:40
 */
public class WelcomeApp {
    public static void main(String[] args) {
        //create new thread

        Thread welcomeThread = new WelcomeThread();
        welcomeThread.start();

        System.out.printf("1. Welcome ! I'm %s.%n",Thread.currentThread().getName());

    }
}
class WelcomeThread extends Thread{
    @Override
    public void run(){
        System.out.printf("2. Welcome ! I'm %s.%n",Thread.currentThread().getName());
    }
}
image.png

多次执行程序得到的结果可能不同

  1. 创建 Runnable 接口实例

/**
 * @author: kent
 * @date: 2018/4/18 09:48
 */
public class WelcomeApp1 {
    public static void main(String[] args) {
//创建线程
        Thread welcomeThread =  new Thread(new WelcomeTask());

        welcomeThread.start();

        System.out.printf("1. welcome ! I'm %s.%n",Thread.currentThread().getName());
    }
}

class WelcomeTask implements Runnable{
    @Override
    public void run(){
        System.out.printf("2. Welcome ! I'm %s.%n",Thread.currentThread().getName());
    }
}
image.png

多次执行程序得到的结果可能不同

避免应用代码直接调用线程的 run 方法


/**
 * @author: kent
 * @date: 2018/4/18 10:32
 */
public class WelcomeApp2 {
    public static void main(String[] args) {

        Thread welcomeThread = new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.printf("2. welcome ! I'm %s.%n",Thread.currentThread().getName());
            }
        });

        welcomeThread.start();//启动线程
        welcomeThread.run();//直接调用,其实运行在main线程里面
        System.out.printf("1. welcome ! I'm %s.%n",Thread.currentThread().getName());
    }
}

image.png

多次执行程序得到的结果可能不同

比较两种创建方式

从面向对象的角度来说:第一种创建方式(创建Thread的子类)是一种基于继承(Inheritance)的技术,第二种创建方式(以Runnable接口实例为构造器参数直接通过 new 创建 Thread 实例)是一种基于组合的(Composition)技术,由于组合相对于继承来说耦合性(Coupling)更低,因此更加灵活。组合是优先选用的技术

相关文章

网友评论

    本文标题:2018-04-18 Java 多线程编程实战-线程创建的两种方

    本文链接:https://www.haomeiwen.com/subject/rafvkftx.html