栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程相关问题

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程相关问题

一、理论基础

1、为什么用使用多线程技术

(1)、抢CPU,充分抢占服务器的cpu核心数,单个cpu时间切片处理程序的时间值相对比较固定,要提高程序整体的运行速度,就可以采用多个cpu核同步来工作,达到抢占cpu计算资源,提高自身程序的运行速度的目的

(2)抢业务资源,对特定资源的争夺时,多线程能提高程序运行的稳定性,增强用户体验。如电商秒杀,12306抢票,资源的总量有限,但是并发的数量却非常高。如果单用单线程,一旦线程出现阻塞,所有的请求都将会收到影响,而采用多线程,既可以同时处理大量的数据请求,单一线程阻塞并不会影响程序整体的稳定运行。既增强了用户体验,又提高了程序的稳定性。

(3)、抢集群资源,提高I/O吞吐量,在分布式集群的环境中,关系型数据库和非关系型数据库大多采用分布式集群搭建,业务节点服务器采用一主多从或多主多从。采用多线程,可以充分利用集群构建的I/O通道,提高程序运行销量。

二、实现多线程的几种方式

1.继承Thread类,重写run方法;
2.实现Runnable接口,重写run方法;
3.实现Callable接口,重写call方法;
4.通过线程池实现多线程(实现Runnable接口+Executors创建线程池);

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

优点:简单,且只需要实现父类的run方法即可(start方法中含有run方法,会创建一个新的线程,而run是执行当前线程)。

缺点:Java的单继承,如果对象已经继承了其他的类则不能使用该方法。且不能获取线程的返回值

2、【实现Runnable接口】

优点:简单,实现Runnable接口必须实现run方法。

缺点:创建一个线程就必须创建一个Runnable的实现类,且不能获取线程的返CallabTask优点:可以获取多线程的返回值。缺点:每个多线程都需要创建一个Callable的实现类

3、【实现Callable接口,重写call方法】
**优点:**实现Callable接口,重写call方法,Callable的任务执行后可返回值,而Runnable的任务是不能返回值的
缺点自定义类实现Callable接口时,必须指定泛型,该泛型即返回值的类型,每次创建一个新的线程,都要创建一个新的Callable接口的实现类。

4、【线程池ExecutorService和工具类Executors】

优点:可以根据实际情况创建线程数量,且只需要创建一个线程池即可,也能够通过Callable和Future接口得到线程的返回值,程序的执行时间与线程的数量紧密相关。

缺点:需要手动销毁该线程池(调用shutdown方法)。

三、引申出来常见的池化技术

1、池化技术
池 是在计算机技术中经常使用的一种设计模型,其内涵在于:将程序中需要经常使用的核心资源先申请出来,放到一个池内,由程序自己管理,这样可以提高资源的使用效率,也可以保证本程序占有的资源数量。

**核心:**因为在Java中这些对象实例被经常使用到,频繁的创建和销毁需要大量的时间和计算资源,延长了程序运行时间和降低程序稳定性。所以用池化技术来统一管理,由相应的池对象来负责统一的创建和管理,需要用的时候,找池对象来取就可以。多路复用I/O也是池化技术思想的具象化。

2、常见的池化技术主要有
线程池、
数据库连接池、
内存池、
对象池

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/996230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号