Java中创建线程的肮脏方式
我最近开始深入研究Java中的多线程。在探索过程中,我发现有两种快速而肮脏的方法可以在Java中“动态”创建线程。以下是一个例子:Java中创建线程的肮脏方式,java,multithreading,Java,Multithreading,我最近开始深入研究Java中的多线程。在探索过程中,我发现有两种快速而肮脏的方法可以在Java中“动态”创建线程。以下是一个例子: public static void main(String[] args) { System.out.println("Thread: " + Thread.currentThread().getName()); new Thread() { public void run() { System.out.p
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();
}
new Thread(){
new Thread(new Runnable(){
Thread.currentThread()
:
然而,在任何非平凡的情况下(即,如果线程执行的不仅仅是几次打印),通常的规则适用于第二种方法
如果您使用的是Java 8,您甚至可以利用Runnable
是一个功能性接口这一事实:
new Thread(() -> {
System.out.println("Thread: " + Thread.currentThread().getName());
System.out.println("hello");
}).start()
最后一点注意:我现在很少使用线程。每当我使用线程时,我都倾向于使用ExecutorServices来重写它。你指的是什么“脏”的概念?@ChrisMartin“脏”在线程中与任何类都没有关联。我应该改为“内联”吗?我相信你要找的词是“匿名”的.相关阅读:你说的不那么详细是什么意思?第一个已经被官方禁止了,原因是暴露于所有
线程类的内部,这可能会导致对程序员甚至都不知道的成员意外地、不直观地参与鲜为人知的Java命名解析规则l这背后的原则是喜欢组合而不是继承。@Anurag,我所说的不太详细是指代码更少(因为您省略了new Runnable()
部分)。@MarkoTopolnik在组合方面有一个很好的观点。稍微重新阐述一下我的答案。
new Thread(() -> {
System.out.println("Thread: " + Thread.currentThread().getName());
System.out.println("hello");
}).start()