加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java中创建线程的脏方法

发布时间:2020-12-15 04:23:55 所属栏目:Java 来源:网络整理
导读:我最近开始深入研究 Java中的多线程.在探索事物的过程中,我发现在Java中有两种快速而肮脏的方法可以“随时随地”创建Threads.这是一个例子: public static void main(String[] args) { System.out.println("Thread: " + Thread.currentThread().getName());
我最近开始深入研究 Java中的多线程.在探索事物的过程中,我发现在Java中有两种快速而肮脏的方法可以“随时随地”创建Threads.这是一个例子:

public static void main(String[] args) {
    System.out.println("Thread: " + Thread.currentThread().getName());

    new Thread() {
        public void run() {
            System.out.println("Thread: "
                    + Thread.currentThread().getName());
            System.out.println("hello");
        }
    }.start();

    new Thread(new Runnable() {

        @Override
        public void run() {
            System.out.println("Thread: "
                    + Thread.currentThread().getName());
            System.out.println("hello");
        }

    }).start();
}

>第一个是以新的Thread()开头的那个{
>第二个出现在以新线程开始的之后(新的Runnable(){

我只想问两种方法是否正确?除了实现Runnable Interface v / s扩展Thread类的差异之外还有什么区别?

解决方法

两种方式都是可以接受的(在我看来,这两种方式都不是“脏”).第一个是不那么冗长,而且我喜欢这样一个像这样的小事.如果你正在扩展Thread,那么你也可以跳过Thread.currentThread():

new Thread() {
    public void run() {
        System.out.println("Thread: " + getName());
        System.out.println("hello");
    }
}.start();

然而,在任何非平凡的情况下(即如果线程不仅仅是几个印刷品),通常的“favor composition over inheritance”规则适用于第二种方法.

如果您使用的是Java 8,您甚至可以利用Runnable是一个功能界面:

new Thread(() -> {
    System.out.println("Thread: " + Thread.currentThread().getName());
    System.out.println("hello");
}).start()

最后一点:这些天我很少使用线程.每当我这样做时,我倾向于最终使用ExecutorServices重写它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读