Java 爪哇,唐';不要等待线程完成
我需要找到一种从静态调用中剥离线程的方法,而不是等待线程完成。基本上,是一种“先开火,然后忘记”的方法。有人能给我举一个简单的例子来说明如何做到这一点吗 基本上启动线程,不执行连接。因此,您将不会等待线程完成。如果它是一个长寿命线程,其生命周期与您的应用程序本身类似,并且将花费大量时间等待其他线程:Java 爪哇,唐';不要等待线程完成,java,multithreading,Java,Multithreading,我需要找到一种从静态调用中剥离线程的方法,而不是等待线程完成。基本上,是一种“先开火,然后忘记”的方法。有人能给我举一个简单的例子来说明如何做到这一点吗 基本上启动线程,不执行连接。因此,您将不会等待线程完成。如果它是一个长寿命线程,其生命周期与您的应用程序本身类似,并且将花费大量时间等待其他线程: Thread t = new Thread(new YourClassThatImplementsRunnable()); t.start(); // JDK 8 new Thread(() -&
Thread t = new Thread(new YourClassThatImplementsRunnable());
t.start();
// JDK 8
new Thread(() -> methodYouWantToRun()).start();
new Thread(new yourLongRunningProcessThatImplementsRunnable()).start();
如果它是一个短暂的、CPU受限的任务:
ExecutorService es = Executors.newFixedThreadPool(Runtime.availableProcessors());
es.submit(new yourTaskThatImplementsRunnable());
尽管如此,在大多数情况下,您将向相同的ExecutorService
提交许多任务
见:
(3)如果你经常遇到“火忘”的短命任务,那么考虑使用java 5的可用性。
这基本上是线程的默认行为——这个线程是否需要在某个时刻发出调度线程或改变共享变量的状态?如果任务相对简单,可以使用线程的可运行构造函数(即新线程(new Runnable(){public void run(){…})),因为这样你就不会扩展复杂的类,而是实现一个接口,在字节码中应该更简单,并且不会与线程中的方法有任何名称冲突。ExecutorService es = Executors.newFixedThreadPool(Runtime.availableProcessors());
es.submit(new yourTaskThatImplementsRunnable());