精华内容
下载资源
问答
  • java线程在项目中的应用场景

    千次阅读 2017-08-10 17:59:37
    1、单线程和多线程区别: 单线程处理的优点:同步应用程序的开发比较容易,但由于需要在上一个任务...1.多线程开发可以将耗时操作放入子线程,将UI刷新加入主线程,防止页面卡顿。 2.并发操作时使用多线程,如C

    1、单线程和多线程区别:

    单线程处理的优点:同步应用程序的开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程应用程序低,如果完成同步任务所用的时间比预计时间长,应用程序可能会不响应。

    多线程处理可以同时运行多个过程,简单说下多线程开发的益处:

    1.多线程开发可以将耗时操作放入子线程,将UI刷新加入主线程,防止页面卡顿。

    2.在并发操作时使用多线程,如C/S架构的服务器端并发线程响应用户的请求。

    3.在多核CPU系统中,使用线程可以提高程序响应速度,提高CPU和内存的利用率。

    4.改善程序结构。将一个复杂的的进程分为多个线程,减少类之间的耦合。

    5.将程序分块管理,方便程序的开发和维护。

    6.可以随时停止任务。 可以分别设置各个任务的优先级以优化性能。

    2、开启多线程

    一个请求就是一个线程,这个线程不需要我们来控制,WEB容器自己实现,这是第一个应用。
    我们也可以在web中new线程来做我们的事。比如,当我有一个很耗时的操作,像统计排名之类的功能。当用户在web上点击排名时,由于这个计算量太大,可能要计算3~5分钟或更久。这时我们会在servlert中new一个线程来做这个事情,这样用户就可以点击排名后去做其他的事,等排名出来现通知他。如果不new线程当用户点排名时,浏览器就会一直卡在这里,一个圈圈转啊转的,就是不出来。所以我们可以new线程来做耗是任务。还有很多比如,定时任务、WEB版的爬虫程序、监听等

    3、场景一:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。
    场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量(这样不同方法可以共享),任务执行一定程度就给变量值加1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。

    场景三:电商项目中controller层需要接收前台传来的需要下架商品id,因为是全选操作所以也就是数据库中商品表的所有id。然后调用service层业务逻辑进行删除。本人数据库中商品表大概有3000条数据,在不考虑多线程方式下,速度已经明显受到影响,实际项目中又何止成千上万条数据!如果单线程逐一进行删除其性能可想而知。所以考虑创建多个线程,多线程并发形式执行商品下线业务逻辑。

    总之使用多线程就是为了充分利用cpu的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低,耗时特别长,就可以考虑使用多线程。不过CPU执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!

    展开全文
  • 电商项目中的多线程使用经验

    万次阅读 2018-08-26 11:06:15
    并不是说采用ssh的项目,框架自动就帮你弄好多线程了,那是不可能的。 场景一:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,...

    多线程的使用经验

    是否使用多线程是看实际场景,跟架构没多大关系。比如你用ssh做电商网站
    ,肯定要考虑多线程问题,如果用ssh做一般的管理应用系统,并发量不是很大,就不需要多线程。 并不是说采用ssh的项目,框架自动就帮你弄好多线程了,那是不可能的。

    场景一:

    一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。

    场景二:

    需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量(这样不同方法可以共享),任务执行一定程度就给变量值加1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。总之使用多线程就是为了充分利用cpu的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低,耗时特别长,就可以考虑使用多线程。
    问题:
    不过CPU执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!

    展开全文
  • JAVA项目中哪些场景需要用到多线程

    千次阅读 2018-12-15 09:15:40
    这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。 场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现...

    场景一:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。

    场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量(这样不同方法可以共享),任务执行一定程度就给变量值加1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。
    总之使用多线程就是为了充分利用cpu的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低,耗时特别长,就可以考虑使用多线程。不过CPU执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!

    展开全文
  • http://blog.csdn.net/u012661010/article/details/76696309问:能不能简单描述一下你java web开发需要用到多线程编程的场景?对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的...

    http://blog.csdn.net/u012661010/article/details/76696309

    问:能不能简单描述一下你在java web开发中需要用到多线程编程的场景?


    对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多线程编程的场景吗?

    回答一:

    最典型的如:
    1、用户注册完成送大礼包/积分之类,且积分等也是另一个系统并比较耗时;且这类任务即使失败也不是特别重要的。
    2、后台线程:比如定期执行一些特殊任务,如定期更新配置文件,任务调度(如quartz),一些监控用于定期信息采集等。

    回答二:

    最典型的应用比如tomcattomcat内部采用的就是多线程,上百个客户端访问同一个web应用,tomcat接入后都是把后续的处理扔给一个新的线程来处理,这个新的线程最后调用到我们的servlet程序,比如doGet或者doPost方法。

    如果不采用多线程机制,上百个人同时访问一个web应用的时候,tomcat就得排队串行处理了,那样客户端根本是无法忍受那种访问速度的。

    还有就是需要异步处理的时候,需要使用多线程。比如task a和task b要并行处理,单个线程只能串行处理,先做完task a然后再做task b。如果想要多个task同时执行的话,就必须为每个task分配一个线程,然后通过java虚拟机的线程调度,来同时执行多个任务。比如你的CPU是多核心的话,就可以让一个CPU执行一个线程。如果只有一个CPU的话,底层是按照分时复用的原则,各个线程按照时间片来获得CPU资源。

    回答三:

    特别耗时的操作,如备份数据库,可以开个线程执行备份,然后执行返回,前台不断向后台询问线程执行状态


    问:JAVA项目中哪些场景需要用到多线程,深感迷茫,请使用过的高手指点。

    答:


    场景一:一个业务逻辑有很多次的循环每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。


    场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现方式可以是在任务中加入一个整型属性变量(这样不同方法可以共享),任务执行一定程度就给变量值加1,另外开一个线程按时间间隔不断去访问这个变量,并反馈给用户。


    总之使用多线程就是为了充分利用cpu的资源,提高程序执行效率,当你发现一个业务逻辑执行效率特别低耗时特别长,就可以考虑使用多线程。不过CPU执行哪个线程的时间和顺序是不确定的,即使设置了线程的优先级,因此使用多线程的风险也是比较大的,会出现很多预料不到的问题,一定要多熟悉概念,多构造不同的场景去测试才能够掌握!

    个人总结:执行效率特别低,耗时特别长都可以考虑多线程。如果耗时操作本身就包含多个task,可以直接提交到线程池去执行 ;如果是很多次的循环,每个任务(task)的界限不是很明确,可以像上面“场景一”中“验证1万条url路径是否存在”的解决思路,人为划分成多个任务(比如把处理200条url作为一个任务),分别提交到线程池去执行。划分任务 --> 提交任务到线程队列

    以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索应用 , 线程 , 多线程 , cpu , 效率 时间 java web项目 多线程、java多线程应用场景、java多线程的应用场景、java多线程使用场景、java多线程场景,以便于您获取更多的相关知识。

    代码参考:

    模拟批量导入需求的多线程实现例子

    展开全文
  • 线程在web的使用

    千次阅读 2018-09-28 15:01:05
    2、后台线程:比如定期执行一些特殊任务,如定期更新配置文件,任务调度(如quartz),一些监控用于定期信息采集等。 回答二: 最典型的应用比如tomcat,tomcat内部采用的就是多线程。 上百个客户端访问同一个web...
  • 线程在PyQt5的应用记录

    万次阅读 2021-05-13 16:25:26
    博主学习Python编程过程,有个问题一直没有理解透彻,就是多线程问题,因为工作项目都比较小,很少用到多线程,但是这个问题却是个很底层的问题,因此还是打算学习一下,查阅了一些资料,记录一下学习心得。...
  • java Web项目中用到多线程的场景

    万次阅读 多人点赞 2018-06-30 00:54:37
    出自:https://blog.csdn.net/u012661010/article/details/76696309问:能不能简单描述一下你java web开发需要用到多线程编程的场景?对多线程有些了解,但是不太清楚具体的应用场景,能简单说一下你遇到的多...
  • Java WEB项目制作过程web.xml巧用Listener可以实现一些特定的需求,可以监听 Web应用事件,能最大程度地控制你的Web应用,这里介绍两个比较重要的 WEB应用事件:应用启动事件发生你的应用第一次被...
  • 如今框架横行,Spring 已经是非常成熟的容器体系,我们日常开发 JavaWeb 的工作,大多已经不需要考虑多线程的问题,这些问题都已经Spring容器实现,框架的意义就是让程序员们可以专注于逻辑的实现。...
  • 浅谈多线程在java程序的应用

    万次阅读 多人点赞 2017-03-29 10:54:37
    一个高并发的网站,多线程是必不可少的。下面先说一下多线程在程序的作用。 1、提高前端请求的响应速度。当我们执行一个比较耗时的方法时,http请求得不到响应甚至会超时,这时如果业务上允许数据的延迟,...
  • eclipse中加入线程的设置

    千次阅读 2016-05-27 09:38:56
    eclipse 解决方法如下: Project->Properties->C/C++ Build->Settings->GCC C++ Linker->Libraries Libraries(-l)添加pthread即可 Libraries search path(-L)添加crypto即可
  • Celery 4.3.0 task执行多线程任务

    千次阅读 2019-10-09 00:56:06
    开发的调试过程,发现如果django项目里面或者celery的task使用协程gevent的话,使用monkey补丁的时候会报错。 那么尝试了很久,发现celery是可以执行多线程的,下面来演示一下执行的示例。 编写使用多...
  • Android 线程

    万次阅读 多人点赞 2018-07-28 18:30:42
     线程在Android是一个很重要的概念,从用途上来说,Android线程可以分为主线程和子线程,主线程主要用来处理和界面相关的事,比如界面绘制和响应用户的操作,为了确保用户体验,主线程必须确保其响应速度,...
  • springboot集成多线程

    2019-07-26 08:55:13
    springboot项目中集多...1.首先在项目启动类中加入设置线程基本配置项 //多线程配置 @EnableAsync @Configuration class TaskPoolConfig { @Bean("NetmarchThread") public Executor taskExecutor() { ...
  • 二、现在需要QT项目中启动一个线程,这个线程专门负责TCPScoket通信接收数据,程序如下: 1.头文件 class ThreadReceive : public QThread { Q_OBJECT private slots: void connected(); void readyread...
  • C# 线程中如何调用Winform

    千次阅读 2017-02-14 09:25:52
     我的WinForm程序中有一个用于更新主窗口的工作线程(worker thread),但文档中却提示我不能线程中调用这个form(为什么?),而事实上我调用时程序常常会崩掉。请问如何从多线程中调用form中的方法呢?  ...
  • Qt线程的使用

    万次阅读 多人点赞 2016-11-11 20:46:39
    最近项目中提出了新的需求,需要采集和收集图片。因为是高速相机,按照帧率至少200FPS的速度计算的话,30秒时间的图片也就是6000帧,同时要保持尽量不掉帧。因此这个开发任务就有两个重点: 1、如何能够收集图片的...
  • C#的多线程 - 高级多线程

    千次阅读 2017-06-08 16:28:42
    1非阻塞同步Permalink ...尽管锁总能满足这个需求,一个存在竞争的锁意味着肯定有线程会被阻塞,就会导致由上下文切换和调度的延迟带来的开销,高并发以及对性能要求很高的场景,这不符合需要。.NET Frame
  • 不可剥夺条件 一个线程已经占有的资源,释放之前不会被其它线程抢占 请求和保持条件 线程等待过程不会释放已占有的资源 循环等待条件 多个线程互相等待对方释放资源 死锁预防,那么就是需要破坏这四个必要条件...
  • C++使用openmp进行多线程编程

    万次阅读 多人点赞 2015-11-13 15:53:40
    声明:本文是基于Joel Yliluoma写的Guid into OpenMP:Easy multithreading programming ...多线程在实际的编程的重要性不言而喻。对于C++而言,当我们需要使用多线程时,可以使用boost::thread库或者自从C++ 11开始
  • 基于UDP、TCP、多线程的socket编程

    热门讨论 2011-12-16 23:19:15
    分别用UDP、TCP、多线程通信三种方式实现socket编程,是学习socket编程最全的小项目,是linux高级编程学习必须部分,现在我工作基本天天都跟他们打交道
  • Linux pthread 线程库历史

    千次阅读 2017-02-27 09:53:27
    作者:大河 ...来源:知乎 ... 原问题:Linux下调用pthread库创建的线程是属于用户级线程还是内核级线程?求大神指教? 这个事情,还真不是一句话就能回答的,因为涉及到Linux和编译器的版本关于线程的概
  • Spring Mvc线程中手动创建Bean

    千次阅读 2017-05-11 01:19:01
    使用Spring+springMVC+mybatis框架建立的项目如果需要使用到多线程可能会出现一个问题——无法创建Bean 错误代码一般为: Post-processing failed of bean type [class ...
  • 项目中用到了多线程,但是线程异步操作时无法调用Service层和Dao层的函数,进行数据库的读取,然后就想办法如何往线程中注入Service和Dao层的bean。
  • python回调函数使用多线程的方法

    千次阅读 2020-03-14 21:59:22
    这篇文章主要介绍了python回调函数使用多线程的方法,需要的朋友可以参考下 下面的demo是根据需求写的简单测试脚本 #!/usr/bin/env python # coding: utf-8 # 第一个列表为依赖组件和版本号,后面紧跟负责人名称 # ...
  • 【操作系统】Nachos 内核线程

    千次阅读 2021-11-11 20:59:07
    2021SC@SDUSC 实验一:Nachos 内核线程
  • Android多线程异步任务,在主线程中回调在Android中在后台执行多线程异步任务的时候,当异步任务执行成功之后就需要回调主线程,在Android中有很多种回调的方式,我这边自己根据自己开发出的项目,整理出了自己的一...
  •   最近研究c/c++下的多线程,怎奈vs2017并没有自带pthread库,网络上很多教程说得不是很明确,又或者是其版本太低…总之问题重重,pthread库下载地址:ftp://sourceware.org/pub/pthreads-win32/pthreads-w32-2-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 167,151
精华内容 66,860
关键字:

如何在项目中加入线程