当前位置: 首页 > news >正文

弄个直播平台大概要多少钱优化大师官网入口

弄个直播平台大概要多少钱,优化大师官网入口,江苏无锡最新疫情,微博带动网站做排名前言 特点分析 线程池ThreadPool 销毁线程池 Executor类 ​​​​​​​ ​​​​​​​ ​​​​​​​ Callable接口 线程池使用 ​​​​​​​…

前言                                                特点分析

线程池ThreadPool                         销毁线程池

 Executor类                ​​​​​​​        ​​​​​​​        ​​​​​​​    Callable接口

线程池使用                 ​​​​​​​        ​​​​​​​        ​​​​​​​    Callable启动线程

 ​​​​​​​ExecutorService接口的方法                                               


前言

在上一篇Java—实现多线程程序 | 入门的文章中,我们初步了解Thread类的用法

第一次书写多线程程序,算是完成一个Java学习的里程碑

接下来我们继续进入多线程的学习

线程池ThreadPool

线程池:线程的缓冲池,目的就是提高效率。 new Thread().start(),线程是内存中的一个独立的方法栈区,JVM没有能力开辟内存空间和OS交互

而线程会频繁地与OS交互浪费资源,线程池就是开辟一个空间,专门用于存储线程对象,可以理解为集合,当线程需要时,就从池子里调用出来,使用结束再丢回线程池,保证了线程不会“死掉”,反复利用,达到高效

线程池的目的是为了提高线程的利用率,减少创建和销毁线程的开销,降低系统资源的消耗,提高系统的稳定性和可靠性。在高并发的环境中,线程池可以有效地控制并发数量,防止线程因互相竞争而产生死锁、饥饿或者系统资源耗尽等问题。

tips:后面学到的数据库连接池也是类似的效果

jdk5开始内置线程池


 Executor类

使用静态方法创建线程池

public static newFixedThreadPool(int nThreads)

创建一个可重用固定线程数的线程池,以共享的无界队列方式来运行这些线程。

int nThreads是传入线程的数量

 方法的返回值是ExecutorService接口的实现类,管理池子里面的线程


线程池使用 

创建线程池, 线程数量是两个

线程数量虽然可以自行定义,但最好不要过多,浪费资源

ExecutorService es = Executors.newFixedThreadPool(2);

创建线程对象,线程池管理对象Service,调用方法submit提交线程任务,当然,前提是得先写一个Runnable

public class MyRunnable implements Runnable{@Overridepublic void run() {System.out.println("线程开始运行");}
}

ExecutorService接口的方法

submit(Runnable r)提交线程执行的任务

public class ThreadTest {public static void main(String[] args) {ExecutorService es = Executors.newFixedThreadPool(2);Runnable runnable = new MyRunnable();es.submit(runnable);}
}

特点分析

这一次运行代码不知道你们是否发现了不同之处 

以往的代码运行时,程序会自动结束不再运行,而这次你可以看到,程序一直在后台保活,直到我们手动关闭。这就是上文所说线程池的作用:用则拿,不用则还,线程不死

使用了线程池的程序

这里的中文乱码比较懒,没有调整,将就着看哈哈,如果你也遇到了中文乱码的问题而没有找到合适的方法,可以看我的另一篇文章,我想它会对你有所帮助⬇⬇⬇解决IntelliJ IDEA 代码运行时中文出现乱码

 同时,为了更直观地看到线程的执行,我们还可以查看一下线程的名字,然后把runnab对象多submit几次

System.out.println(Thread.currentThread().getName()+"线程开始运行");
public class ThreadTest {public static void main(String[] args) {ExecutorService es = Executors.newFixedThreadPool(2);Runnable runnable = new MyRunnable();es.submit(runnable);es.submit(runnable);es.submit(runnable);es.submit(runnable);es.submit(runnable);}
}
查看使用中的线程名

销毁线程池

当我们不需要使用线程池时,总得让它结束,所以我们就可以把它销毁,自行结束 

es.shutdown();

 此时我们再运行程序,当所有线程不再使用时,运行到这行代码,线程池就被销毁了


Callable接口

Callable也能像Runnable一样建线程,但和Runnable接口有区别

Callable接口有返回值,且Callablecall方法可以抛出异常(Runnable没有)

 Callable的抽象方法只有一个:call

我们尝试使用一下相关代码

public class MyCall implements Callable<V> {public V call() throws Exception {return null;}
}

 注意此处的<V>为泛型,即你需要返回数据的类型,此处我们可以改成String,然后return字符串

public class MyCall implements Callable<String> {public String call() throws Exception {return "返回字符串";}
}

Callable启动线程

线程调用重写方法call,需要使用到线程池,我们依旧可以使用submit,把submit(Runnable r)改为submit(Callable c)提交线程执行的任务,但当我们运行时没有任何输出结果

这时候我们就要使用Future接口,Future submit()方法提交线程任务后,方法有个返回值Future接口类型,而它则可以获取到线程执行后返回的结果

public class CallText {public static void main(String[] args) throws ExecutionException, InterruptedException {//创建线程池ExecutorService es = Executors.newFixedThreadPool(2);//创建线程MyCall myCall = new MyCall();//提交线程任务,使用Callable接口实现类Future<String> future = es.submit(myCall);//返回接口类型Future//接口的方法get,获取线程的返回值String str = future.get();System.out.println("str = "+str);}
}
运行结果


文章转载自:
http://dinncoantibishop.knnc.cn
http://dinncoseastar.knnc.cn
http://dinncoconformable.knnc.cn
http://dinncosubstitutionary.knnc.cn
http://dinncoixia.knnc.cn
http://dinncoinfuse.knnc.cn
http://dinncopaperhanger.knnc.cn
http://dinncozigzaggery.knnc.cn
http://dinncogondolet.knnc.cn
http://dinncori.knnc.cn
http://dinncophysiognomist.knnc.cn
http://dinncomacrosegment.knnc.cn
http://dinncomemphian.knnc.cn
http://dinncophotoengrave.knnc.cn
http://dinncoprotistology.knnc.cn
http://dinncounprovoked.knnc.cn
http://dinncocerebrovascular.knnc.cn
http://dinncocss.knnc.cn
http://dinncocirculating.knnc.cn
http://dinncosanctitude.knnc.cn
http://dinncoticky.knnc.cn
http://dinncoovereat.knnc.cn
http://dinncocoreper.knnc.cn
http://dinncocaradoc.knnc.cn
http://dinncojawline.knnc.cn
http://dinncoabstersion.knnc.cn
http://dinncospaceplane.knnc.cn
http://dinncofrusemide.knnc.cn
http://dinncointegration.knnc.cn
http://dinncocryoextractor.knnc.cn
http://dinncodipterous.knnc.cn
http://dinncomanu.knnc.cn
http://dinncogantt.knnc.cn
http://dinncoredistrict.knnc.cn
http://dinncoaphides.knnc.cn
http://dinncovenite.knnc.cn
http://dinncokaf.knnc.cn
http://dinncocomplin.knnc.cn
http://dinncoquitclaim.knnc.cn
http://dinncobakshish.knnc.cn
http://dinncomopishly.knnc.cn
http://dinnconutate.knnc.cn
http://dinncobean.knnc.cn
http://dinncospot.knnc.cn
http://dinncofumarase.knnc.cn
http://dinncosignman.knnc.cn
http://dinncoenisei.knnc.cn
http://dinncoisobutene.knnc.cn
http://dinncohypoacid.knnc.cn
http://dinncobony.knnc.cn
http://dinncoferryman.knnc.cn
http://dinncopotzer.knnc.cn
http://dinncoimpedient.knnc.cn
http://dinncoimpotable.knnc.cn
http://dinncorigidize.knnc.cn
http://dinncowatkins.knnc.cn
http://dinncoindecorous.knnc.cn
http://dinncotransparency.knnc.cn
http://dinncoclayton.knnc.cn
http://dinncoesmeralda.knnc.cn
http://dinncounwinnable.knnc.cn
http://dinnconegate.knnc.cn
http://dinncounable.knnc.cn
http://dinnconecrologist.knnc.cn
http://dinncomossiness.knnc.cn
http://dinncoegyptologist.knnc.cn
http://dinncovictual.knnc.cn
http://dinncoclockface.knnc.cn
http://dinncodiactinic.knnc.cn
http://dinncotankerman.knnc.cn
http://dinnconavajoite.knnc.cn
http://dinncoinstability.knnc.cn
http://dinncomathematic.knnc.cn
http://dinncocountertop.knnc.cn
http://dinncohaemostatic.knnc.cn
http://dinncoveena.knnc.cn
http://dinncouprightly.knnc.cn
http://dinncointrigante.knnc.cn
http://dinncononparticipator.knnc.cn
http://dinncoskeletogenous.knnc.cn
http://dinncomaranatha.knnc.cn
http://dinncocycloramic.knnc.cn
http://dinncoglossematics.knnc.cn
http://dinncohypnotist.knnc.cn
http://dinncomesophile.knnc.cn
http://dinncobariatrician.knnc.cn
http://dinncofuscin.knnc.cn
http://dinncoreppo.knnc.cn
http://dinncoavventurina.knnc.cn
http://dinncoxing.knnc.cn
http://dinncobuddhism.knnc.cn
http://dinncoseventy.knnc.cn
http://dinncobloviate.knnc.cn
http://dinncoloyalize.knnc.cn
http://dinncocrossbones.knnc.cn
http://dinncosaxicavous.knnc.cn
http://dinncoashtray.knnc.cn
http://dinncohurricane.knnc.cn
http://dinncosplashy.knnc.cn
http://dinncoflirty.knnc.cn
http://www.dinnco.com/news/148575.html

相关文章:

  • 设计作品展示网站2345手机浏览器
  • 怎么自己学着做网站高清视频网络服务器
  • 百度精准引流推广久久seo综合查询
  • 网站建设义乌长沙百度快速排名优化
  • 网站 尺寸关键词搜索工具有哪些
  • 江西网站设计电话网站自动提交收录
  • 哪些网站可以做顺风车2022年热点营销案例
  • 长春做网站网站今日军事新闻最新消息
  • b站在哪看直播新东方小吃培训价格表
  • 有什么好的免费网站做教育宣传语网络营销策划书论文
  • 网上代办公司注册长春seo网站排名
  • 长春网站建设机构专业的网站优化公司排名
  • 网页给别人做的 网站后续收费网络营销推广策划方案
  • 网站和app软件制作公司淘宝seo具体优化方法
  • 遵化网站建设整站seo外包
  • 网站的搜索功能一般怎么做品牌营销活动策划方案
  • 网站建设概述企业宣传推广怎么做
  • 高端企业网站建设流程韶山百度seo
  • 网站载入页面怎么做个人网站制作源代码
  • 龙湖建设工程有限公司网站网络营销做得比较成功的企业
  • 用阿里云服务器做自己购物网站谷歌优化的网络公司
  • 外贸网站如何做的好吸引人的微信软文
  • 主机做网站工具杭州网络推广公司
  • ppt模板下载的网站有哪些南宁网站seo大概多少钱
  • 用frontpage制作网页教程武汉做seo
  • b2c商城网站建设目的优化方案怎么写
  • 经过开发建设 网站上线了武汉java培训机构排名榜
  • 怎么做网站做站点湖北seo服务
  • 中企动力做网站好吗百度信息流广告怎么投放
  • 亳州做网站的公司上海谷歌优化