Java 开启多线程常见的4种方法
公司主营业务:成都网站设计、做网站、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出蔚县免费做网站回馈大家。
在 Java 编程中,多线程是一种非常实用的技术,它可以让程序在执行过程中同时处理多个任务,本文将介绍 Java 开启多线程的四种常见方法,包括继承 Thread 类、实现 Runnable 接口、使用 Callable 和 FutureTask 接口以及使用 ExecutorService。
1、1 创建自定义线程类
要创建一个自定义线程类,需要继承 Thread 类,并重写其 run() 方法,run() 方法中的代码将在新线程中执行。
class MyThread extends Thread { @Override public void run() { // 在这里编写线程要执行的任务代码 } }
1、2 启动线程
创建好自定义线程类后,可以通过以下方式启动线程:
MyThread myThread = new MyThread(); myThread.start(); // 启动线程
2、1 创建实现 Runnable 接口的类
要创建一个实现 Runnable 接口的类,需要实现 run() 方法,run() 方法中的代码将在新线程中执行。
class MyRunnable implements Runnable { @Override public void run() { // 在这里编写线程要执行的任务代码 } }
2、2 将实现了 Runnable 接口的类作为参数传递给 Thread 类的构造函数,然后调用 start() 方法启动线程。
Thread thread = new Thread(new MyRunnable()); thread.start(); // 启动线程
3、1 实现 Callable 接口
要创建一个实现 Callable 接口的类,需要实现 call() 方法,call() 方法中的代码将在新线程中执行,并返回一个结果,可以通过 FutureTask 将 call() 方法的结果包装成一个可获取的结果对象。
import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; class MyCallable implements Callable{ @Override public Integer call() throws Exception { // 在这里编写线程要执行的任务代码,并返回一个结果 return result; } }
3、2 将实现了 Callable
import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; import java.util.concurrent.ExecutionException; Callablecallable = new MyCallable(); FutureTask futureTask = new FutureTask<>(callable); Thread thread = new Thread(futureTask); thread.start(); // 启动线程,并在需要时获取结果:futureTask.get();
4、1 实现 ScheduledExecutorService、ExecutorService、ThreadPoolExecutor、WorkStealingPool、ForkJoinPool、SynchronousQueueExecutor、SingleThreadExecutor、PriorityBlockingQueueExecutor、ScheduledThreadPoolExecutor、CachedThreadPoolExecutor、LinkedBlockingQueueExecutor、RejectedExecutionHandler等接口或类的类库提供了丰富的线程池管理功能,可以直接使用这些类库来创建和管理线程池,可以使用 ScheduledExecutorService 实现定时任务。
import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.concurrent.concurrent.Future; // 可以用于提交任务并获取任务结果(推荐) import java.util.concurrent.atomic.AtomicInteger; // 可以用于计数器等场景(推荐) (注:此为自 Java SE7u6以来引入的新特性) // ... 其他推荐使用的类库接口或类 ... (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引入的新特性) (注:此为自 Java SE7u6以来引
当前文章:Java开启多线程常见的4种方法
分享URL:http://www.shufengxianlan.com/qtweb/news28/4228.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联