工作中为什么要用多线程,它的好处,以及一个简单多线程实例。
2017-09-01 10:02
295 查看
在一个高并发的网站中,多线程是必不可少的。下面先说一下多线程在程序中的作用
1、提高前端请求的响应速度。当我们执行一个比较耗时的方法时,http请求得不到响应甚至会超时,这时如果业务上允许数据的延迟,我们可以使用多线程来进行处理比较耗时的方法。这样前端发送了请求,后端令开启了一个线程去处理任务,就不会阻塞主线程了。
2、减清服务器的压力。包括我们的web容器,如tomcat、jetty等,还有数据库服务器等。因为我们使用了多线程,并且线程池大小有限制,如30,那么同时请求数据库的链接就限制为30了,也就是说能够同时执行方法的线程只有30个,其余的任务都放在我们线程的任务队列了,这样数据库就不会被突然上来的请求给压垮了。当然对于缓解数据库压力来说,更建议使用消息队列,使用消息队列我们可以攒数据进行批量提交,而仅仅使用多线程,则不好实现攒数据的过程。
3、提高处理能力,增加性能,充分利用服务器资源。如我们要将三个表里的数据加载到缓存,最简单的我们一个表开启一个线程,共用三个线程去加载缓存则比用一个线程去挨着遍历三个表的数据高效的多。
下面给出一个简单使用多线程实例
/** * Created by hcmony on 2017/8/31. */ public class Test{ //多线程要执行的方法 public static void getInt(int i){ System.out.println(Thread.currentThread().getName()+"-"+i); } static class ThreadTest{ public static void main(String[] args) throws Exception{ //开启一个新线程去做另外的事情,比如我们公司是通过api加载其它的数据。 new Thread(){ @Override public void run() { for (int i=0;i<100000;i++) { try { getInt(i); }catch (Exception e){ } } } }.start(); //单线程要执行的方法 for (int i=0;i<1000000;i++){ System.out.println(i); } } } }
相关文章推荐
- servlet的一个简单实例以及配置到tomcat上
- 在多线程环境中使用CoreData,以及一个简单的封装
- 一个关于多线程的简单实例(抄书)
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- Win32 API 多线程编程——一个简单实例(含消息参数传递)
- Java Tread多线程(0)一个简单的多线程实例
- C#一个简单多线程的实例
- Axis2的相关准备工作,以及提供的一个简单的例子
- SpringMVC4+thymeleaf3的一个简单实例(篇五:页面和MySql的数据交互-展示以及存储)
- Java Tread多线程(0)一个简单的多线程实例
- 一个简单而经典的RTX51 Tiny应用实例
- 一个简单的socket监听的服务器实例
- CocosBuilder简单实例 - 1. 加载一个Layer并连接到类
- SQL注入的一个简单实例
- FrameLayout的顺序,以及elevation对其顺序的影响,CardView的上层放了一个Button,为什么Button看不到了
- C/S模型 多线程服务器实现简单计算工作并回馈客户端
- 为什么连简单的从繁体到简体的“翻译”工作,都能做的如此恶心
- python基于mysql实现的简单队列以及跨进程锁实例详解
- c#一个简单的实例告诉你,多继承还可以这么来