前言:
如今小伙伴们对“java线程实现几种方式”大概比较注重,朋友们都想要剖析一些“java线程实现几种方式”的相关知识。那么小编也在网络上搜集了一些对于“java线程实现几种方式””的相关知识,希望姐妹们能喜欢,各位老铁们一起来学习一下吧!本文主要讲述:多线程工具类之5种实现方式。
众所周知,为提高程序执行效率和资源利用率,我们需要使用到多线程。
应用场景主要是:高并发;异步处理;定时任务;网络爬虫;网络编程等等。
而实现多线程有5种方式。
1、继承Thread类,重写run方法
2、实现Runnable接口
3、实现Callable接口
3、使用定时器
4、创建线程池
下面将分享这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 + "次"); } }}运行结果:二、实现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 + "次"); } }}运行结果:
继承Thread类和实现Runnable接口,去实现多线程,代码是非常类似的,但是Runnable会更胜一筹,因为它可以破除java单继承的限制,并且能够增加代码的健壮性。
三、实现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); }}输出结果:五、创建线程池
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执行结束...
感谢您的阅读,祝你生活愉快,永无加班~
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java线程实现几种方式 #java线程实现几种方式是什么 #多线程程序有几种实现方式 #属于thread类的方法