100个Java工具类之37:多线程工具类之5种实现方式

100个Java工具类之37:多线程工具类之5种实现方式本文主要讲述 多线程工具类之 5 种实现方式 众所周知 为提高程序执行效率和资源利用率 我们需要使用到多线程 应用场景主要是 高并发 异步处理 定时任务 网络爬虫 网络编程等等 而实现多线程有 5 种方式

大家好,欢迎来到IT知识分享网。

本文主要讲述:多线程工具类之5种实现方式。

众所周知,为提高程序执行效率和资源利用率,我们需要使用到多线程。

应用场景主要是:高并发;异步处理;定时任务;网络爬虫;网络编程等等。

而实现多线程有5种方式。

1、继承Thread类,重写run方法

2、实现Runnable接口

3、实现Callable接口

3、使用定时器

4、创建线程池

下面将分享这5种实现方式的具体实例。

100个Java工具类之37:多线程工具类之5种实现方式

一、继承Thread类

public class Thread1 extends Thread { @Override public void run() { for(int i = 1; i < 100; i++){ System.out.println("线程1运行了" + i + "次"); } } public static void main(String[] args) { //开启线程1 Thread1 thread1 = new Thread1(); thread1.start(); //开启主线程 for(int i = 1; i < 100; i++){ System.out.println("主线程线程运行了" + i + "次"); } } } 运行结果:
100个Java工具类之37:多线程工具类之5种实现方式

二、实现Runnable接口

public class Thread1 implements Runnable { @Override public void run() { for(int i = 1; i < 100; i++){ System.out.println("线程1运行了" + i + "次"); } } public static void main(String[] args) { //开启线程1 Thread1 thread1 = new Thread1(); new Thread(thread1).start(); //开启主线程 for(int i = 1; i < 100; i++){ System.out.println("主线程线程运行了" + i + "次"); } } } 运行结果:
100个Java工具类之37:多线程工具类之5种实现方式

继承Thread类和实现Runnable接口,去实现多线程,代码是非常类似的,但是Runnable会更胜一筹,因为它可以破除java单继承的限制,并且能够增加代码的健壮性。

100个Java工具类之37:多线程工具类之5种实现方式

三、实现Callable接口

public class Thread1 { //使用Callable创建线程计算100以内的奇数 public static void main(String[] args) throws Exception { Callable<Integer> callable = new Callable<Integer>() { @Override public Integer call() { int sum = 0; for (int i = 1; i <= 100; i++) { sum += i % 2 == 0 ? 0 : i; } return sum; } }; FutureTask<Integer> task = new FutureTask<>(callable); Thread t = new Thread(task); t.start(); System.out.println(task.get()); } } 输出:2500

四、使用定时器

public class Thread1 extends TimerTask { private int id; public Thread1(int id){ this.id = id; } @Override public void run() { System.out.println("线程" + id + "执行了一次"); } public static void main(String[] args){ Timer timer = new Timer(); //线程1:3秒后开始执行,1秒钟执行一次 timer.schedule(new Thread1(1), 1000,3000); //线程2:2秒后立即执行,1秒钟执行一次 timer.schedule(new Thread1(2), 1000,2000); } } 输出结果:
100个Java工具类之37:多线程工具类之5种实现方式

100个Java工具类之37:多线程工具类之5种实现方式

五、创建线程池

ExecutorService executorService = Executors.newFixedThreadPool(2); executorService.execute(() -> { System.out.println("线程1执行开始..."); Thread.sleep(3000); System.out.println("线程1执行结束..."); }); executorService.execute(() -> { System.out.println("线程2执行开始"); Thread.sleep(1000); System.out.println("线程2执行结束"); }); executorService.shutdown(); 执行结果: 线程1执行开始... 线程2执行开始 线程2执行结束 线程1执行结束...

感谢您的阅读,祝你生活愉快,永无加班~

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/97630.html

(0)
上一篇 2026-03-08 17:21
下一篇 2024-02-29 08:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信