介绍
这篇文章将为大家详细讲解有关java中有哪些实现多线程的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
常用的java框架有哪些
1。SpringMVC, Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级网络框架。2。Shiro, Apache Shiro是Java的一个安全框架。3。Mybatis, Mybatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架.4.Dubbo,达博是一个分布式服务框架.5.Maven, Maven是个项目管理和构建自动化工具.6.RabbitMQ, RabbitMQ是用Erlang实现的一个高并发高可靠AMQP消息队列服务器1:8)。Ehcache, Ehcache是一个纯Java的进程内缓存框架。
<强> 1,λ表达式创建线程强>
使用λ的形式实例化线程任务类,创建线程对象,并将线程任务类作为构造方法参数传入。
package com.kingh.thread.create; public class  CreateThreadDemo5_Lambda { , ,,,public static void main (String [], args), throws Exception { ,,,,,,,//,使用λ的形式实例化线程任务类 ,,,,,,,Runnable task =, (),→, { ,,,,,,,,,,,while (真实),{ ,,,,,,,,,,,,,,,//,输出线程的名字 ,,,,,,,,,,,,,,,printThreadInfo (); ,,,,,,,,,,,} ,,,,,,,}; , ,,,,,,,//,创建线程对象,并将线程任务类作为构造方法参数传入 ,,,,,,,new 线程(任务).start (); , ,,,,,,,//,主线程的任务,为了演示多个线程一起执行 ,,,,,,,while (真实),{ ,,,,,,,,,,,printThreadInfo (); ,,,,,,,,,,,thread . sleep (1000); ,,,,,,,} ,,,} , ,,,/* * ,,,,*,输出当前线程的信息 ,,,*/,,,private static void printThreadInfo (), { ,,,,,,,System.out.println(“当前运行的线程名为:,,,+,Thread.currentThread () . getname ()); ,,,,,,,try { ,,,,,,,,,,,thread . sleep (1000); ,,,,,,,},catch (Exception e), { ,,,,,,,,,,,throw new RuntimeException (e); ,,,,,,,} ,,,} }
<强> 2,使用ExecutorService,可调用的,未来实现有返回结果的多线程强>
可以返回值的任务必须是可调用的接口,类似的,没有返回值的任务必须是可运行的接口。执行可调用的任务后,可以获得一个未来对象,通过调用得到可以获得可调用的任务返回的对象,然后结合线程池接口ExecutorService可以实现传说中有返回结果的多线程。
import java . util . concurrent . *; import java.util.Date; import 并不知道; import java.util.ArrayList; ,/* * *,有返回值的线程 */@SuppressWarnings (“unchecked") public class  Test { public static  void main (String [], args), throws 中 ,,,InterruptedException { ,,System.out.println(“——程序开始运行——“); ,,Date date1 =, new 日期(); , ,,int taskSize =, 5; ,,//,创建一个线程池 ,,ExecutorService pool =, Executors.newFixedThreadPool (taskSize); ,,//,创建多个有返回值的任务 ,,List(); ,,for (int 小姐:=,0;,小姐:& lt;, taskSize;,我+ +),{ ,,,Callable c =, new MyCallable(小姐:+,“,“); ,,,//,执行任务并获取未来对象 ,,,Future f =, pool.submit (c); ,,,//,System.out.println(“,“祝辞的在,,+,f.get () .toString ()); ,,,list.add (f); ,,}//,,,关闭线程池 ,,pool.shutdown (); ,//,,,获取所有并发任务的运行结果 ,,for (Future f :列表),{ ,,,//,从未来对象上获取任务的返回值,并输出到控制台 ,,,System.out.println(“,“祝辞的在,,+,f.get () .toString ()); ,,} , ,,Date date2 =, new 日期(); ,,System.out.println(“——程序结束运行- - - - -,程序运行时间【“ ,,,,+,(date2.getTime(),安康;date1.getTime()), +,“毫秒】“); } } , class MyCallable  implements Callable< Object>, { private String  taskNum; , null null null null null null null null null null null null null null java中有哪些实现多线程的方法