java中有哪些实现多线程的方法

  介绍

这篇文章将为大家详细讲解有关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中有哪些实现多线程的方法