Java项目中什么时候需要多线程?

Java项目中什么时候需要多线程?比如什么项目中那个模块用到了

0

23个回答

刚好看见你的问题,我从我自己见解上回答一下,希望能帮助到你。我学习的是javaweb方面,(其实基本什么项目都会用到多线程,,因为一段代码很可能要多次的使用),比如在浏览器访问我的服务器的时候,很多人都会访问我的浏览器,而且可能会同时,具体一点的话,至少我要一个线程去监听,是否有人访问我,一旦有我就分配(创建)一条线程去执行我的代码,去处理请求,反馈给客户端页面。这个一个访问反馈结束后,我的这条专门为他穿件的额线程也就可以死去了。

4

多线程是一种编程思想,与语言、项目什么的无关。
个人认为 ,首先你应该想一下这个问题:为什么可以多线程以及多线程有什么意义?然后你就知道自己什么时候需要用到了。

CPU从以前的单CPU单核发展为多核、多CPU、重核等,这是多线程可以实现的基础

多线程即意味着多个任务(子任务)可以同时执行(当然,只是宏观上),若是单线程,只能一个接一个顺序执行。
使用多线程,最直接的目的就是希望任务完成的更快。

当然,多线程也会产生一些不希望看到的问题

所以,你需要针对自己的目的来考虑。毕竟,使用任何工具或方法,都只是为了达到某一个目的,为了取得自己认为满意的结果(如:快速达到目的),
才产生了选择各种工具或方法的问题。

5

在不希望等待一个耗时任务的返回结果时,会涉及到多线程,比如下载三个文件,可以在当前线程开启三个新线程分别执行,而不影响当前线程继续运行
在spring的项目中,一个请求就是一个线程

2

首先对java的线程类Thread来进行说明:
1:Thread是针对是java其本身所具有的,但并不能说其没有调用操作系统,其最底层的时间片调度是按照操作系统来执行的。
Thread下可以创建Thread,
2个Thread在一定条件下也可以相互调用。
根据以上特点可以总结认为java中的线程能让高级程序员更好的对庞大和复杂的数据流进行拆分,重组从而减低各个环节性能需求,通过增加各项负荷达到系统资源分配的最优值

也就是为了更快

1

多线程主要运用:
1、定时任务,比如每秒检查接收的邮件;每小时提醒该执行的任务;
2、提高效率,比如打开电脑的任务管理器,其中有很多个进程,这每一个进程互不干扰,我们停止其中任何一个其他不受影响,但若我们都放在一起执行,其中一个异常,其他全部都得挂掉。

1

在不希望等待一个耗时任务的返回结果时,会涉及到多线程,比如同时下载三个文件,还有定时任务等

1

比如servlet的单例多线程?

0

相同软硬件条件下 单线程不能满足业务需求的情况下 可以使用多线程

0

并发情况下。。还有增加效率可以开多个口

0

需要并发处理请求的时候,必须要用到多线程

0
共23条数据 1 3 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
多线程必须用到的线程池(什么时候用多线程)
案例需求:要开发的项目是一个IT问答平台,其中用户发布问题后,需要给平台上所有选了该问题类别的邮箱中各发一份邮件。nnnn分析:这个时候就必须用到多线程了,因为用户发布问题和给其他用户发邮件可以说是两个相互独立的步骤,如果让主程序一行一行执行的话,那如果发邮件的人很多的话,用户发一个问题要等很长时间页面才会响应,这个肯定是不能容忍的。但是用普通new一个线程,然后.start的话会出现大问
JAVA项目中哪些场景需要用到多线程
场景一:一个业务逻辑有很多次的循环,每次循环之间没有影响,比如验证1万条url路径是否存在,正常情况要循环1万次,逐个去验证每一条URL,这样效率会很低,假设验证一条需要1分钟,总共就需要1万分钟,有点恐怖。这时可以用多线程,将1万条URL分成50等份,开50个线程,没个线程只需验证200条,这样所有的线程执行完是远小于1万分钟的。n场景二:需要知道一个任务的执行进度,比如我们常看到的进度条,实现...
总结-Java何时需要使用多线程
不定期更新,谢谢,欢迎补充。nnnnn多线程使用的主要目的在于:nn1、吞吐量:你做WEB,容器帮你做了多线程,但是他只能帮你做请求层面的。简单的说,可能就是一个请求一个线程。或多个请求一个线程。如果是单线程,那同时只能处理一个用户的请求。nn2、伸缩性:也就是说,你可以通过增加CPU核数来提升性能。如果是单线程,那程序执行到死也就利用了单核,肯定没办法通过增加CPU核数来提升性
多线程程序何时需要加锁
简单的说三条:rn多人读,不需要rn一读一写要加rn多人写要加rnrnrn常见错误rn1读1写没事,读写的内存约多,越容易出事,因为不是原子操作rn对int/int64/char型是原子操作, 可不加锁,   其实没人保证这一点的, 要不c++1x还出个原子模板类干什么rnrnrn常用实例rnvector的[]操作是安全的, 如一个线程里 buf[0]++, 另一个buf[1]--是安全的, 因为
思考:多线程读写的时候,什么时候需要加锁
多线程什么时候该加锁?nn加锁、解锁(同步/互斥)是多线程中非常基本的操作,但我却看到不少的代码对它们处理的很不好。简单说来有三类问题:nn一是加锁范围太大,虽然避免了逻辑错误,但锁了不该锁的东西,难免降低程序的效率,那岂不是和单线程一样了;nn nn二是该锁的不锁,导致各种莫名其妙的错误;nn nn三是加锁方式不合适,该用临界区的用内核对象等,也会降低程序的效率。nn nn要正确的运用锁操作,首...
java多线程(5):object类
Object和多线程有关的方法有三个,wait,notify和notifyall。为什么这些方法要出现在Object类里呢?因为这些方法实际上是和锁相关。锁的改变可以引起线程状态的改变。而设计上的时候,本来就计划着锁可以加在任何对象上。但你们都不这么用。这点和C/C++的利用操作系统信号量构建锁不同。nnWAITnn当线程调用wait,它会释放monitor,并进入等待区。java中每个对象都有唯...
Win32多线程程序设计
WIN32多线程方面的书籍,很不错! 讲解了什么时候需要多线程,怎么实现多线程,为什么需要多线程等!
【多线程】在项目中用JAVA使用多线程
n一,初衷nn因为在学习java基础的时候,学习过两种实现多线程的方法。今天在看一个文章的时候,看到了别人在项目中执行多线程。想到自己还没用过,所以将别人的使用方法记录下来,方便以后自己在项目中调用多线程可以尝试一下。nn二,多线程的实现nn2.1 继承Thread类n用java类,如AAA类去继承Thread类,然后重写里面的run()方法,将该线程的任务在run()里面写,然后执行new AA...
16java Web项目中什么场景中会用到java多线程?
https://blog.csdn.net/u012661010/article/details/76696309nnhttps://blog.csdn.net/sunvsjay1890/article/details/52698282
什么时候用多进程什么时候用多线程
多线程:io密集型 rn多进程:计算 cpu耗用的多
在多线程环境中使用HashMap会有什么问题?在什么情况下使用get()方法会产生无限循环?
HashMap本身没有什么问题,有没有问题取决于你是如何使用它的。比如,你在一个线程里初始化了一个HashMap然后在多个其他线程里对其进行读取,这肯定没有任何问题。有个例子就是使用HashMap来存储系统配置项。当有多于一个线程对HashMap进行修改操作的时候才会真正产生问题,比如增加、删除、更新键值对的时候。因为put()操作可以造成重新分配存储大小(re-sizeing)的动作,因此有可能
什么情况下使用多线程?
用并发解决的问题大体上可以分为“速度”和“设计可管理性”两种。n速度问题听起来很简单:如果你想要一个程序运行得更快,那么可以将其断开为多个片段,在单独的处理器上运行每个片段。并发是用于多处理器编程的基本工具。当前,摩尔定律已经有些过时了(至少对于传统芯片是这样),速度提高是以多核处理器的形式而不是更快的芯片的形式出现的。为了使程序运行得更快,你必须学习如何利用这些额外的处理器,而这正是并发赋予你
网络编程——多线程与异步套接字编程(API) 学习
1.多线程技术rn1.1 创建线程rn在VC中编写程雪,调用API函数CreateThread()创建线程。rn该函数原型如下:rnHANDLE CreateThread(nLPSECURITY_ATTRIBUTES lpThreadAttributes,nDWORD dwStackSize,rnLPTHREAD_START_ROUTINE lpStartAddress,rnDWORD dwCre
《现代操作系统》阅读笔记——竞争与加锁
n竞争发生在当多线程同时访问同一个内存,各个线程执行的顺序有交叉时。n一般来说,局部变量和参数由于对每个线程是独立的,不会发生竞争。竞争通常发生在全局变量,堆变量等上。n解决竞争最简单的方法就是进入临界区(开始读写公共内存)时屏蔽掉中断,但是这种方法对于多CPU无效,因为该内存可能会被别的CPU中的程序访问。现在更好的方法是屏蔽那片内存的访问(以前是通过锁住总线解决的)。但是还是会有问题,因为这样...
8.程序什么时候应该使用线程,什么时候单线程效率高?
程序什么时候应该使用线程?nn    使用多线程编程可以给程序员带来很大的灵活性,同时也使原来需要复杂技巧才能解决的问题变得容易起来。不论什么时候只要能用单线程就不用多线程,只有在需要响应时间要求比较高的情况下用多线程。某操作允许并发而且该操作有可能阻塞时,用多线程。nn线程很有用,但当使用线程时,可能会在解决老问题的同时产生新问题。例如要开发一个字处理程序,并想让打印功能作为单独的线程自己执行。...
Android多线程的实现方式及使用场景
      有android开发经验的人都知道,凡是耗时的操作不要放在UI线程种执行,否则会引起ANR错误。所以,如果要执行耗时的操作,我们需要另起线程执行。        通常情况在新线程执行完耗时操作以后,常常是要把结果反馈给UI界面,让UI线程更新界面。然而在android里面,UI线程不是线程安全的,所以不能在非UI线程里面更新界面。         android给我们提供了几种的多线程...
Java多个线程同时访问操作单例对象,需不需要加锁的问题
1、多个线程处理单例对象的共有属性nn        如果两个线程同时访问同一个方法的时候,如果这个方法操作了单例对象中共有的属性,则需要加锁。nn2、多个线程不是处理单例对象的共有属性(可能调用的是某个方法,该方法没有操作对象中的全局属性)nn        多个线程如果不是同时处理一个对象的共有属性,则不会出现线程问题,即使是方法中的属性。nn        如果两个线程同时访问同一个方法的时...
Java为什么要用多线程
用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现。说这个话其实只有一半对,因为反应“多角色”的程序代码,最起码每个角色要给他一个线程吧,否则连实际场景都无法模拟,当然也没法说能用单线程来实现:比如最常见的“生产者,消费者模型”。nn就例如一个网络爬虫的功能,有10亿数据,假如一条请求花费0.1秒,因为时间有限,所以你要尽量提升开发效率,你就需要好多的服务...
多线程什么时候需要使用volatile?
n n n 作者:知乎用户链接:https://www.zhihu.com/question/31459750/answer/52061391来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。来看这个代码:int fun(int& a){   int b = a;    int c = a;   return a+b+c;}int ...
Summary Use Case for Multi-threading Progress Sessions
描述都什么时候需要用多线程,避免多线程的误用。
关于java何时需要重新编译的问题
当写了很多后台代码之后,不清楚eclipse是否已经自动编译过了,如果重启项目可能会浪费很多时间。此时可以通过以下几个方法来检验n1.写了一个ajax请求,后台代码也相应的写全了,此时检验是否可以发送请求并返回处理结果。若报500,同时控制台出现java.lang.NoSuchMethodExceptionn   若检查发送请求地址以及所携带的参数没问题,大概率是没有编译进class文件里。
udp实现多线程
多线程聊天软件n由于 UDP 采用无连接模式,可知 UDP 服务器在接收到客户端发来的数据之前,是不知道客户端的地址的,因此必须是客户端先发送数据,服务器后响应数据。而 TCP 则不同,TCP 服务器接受了客户端的连接后,既可以先向客户端发送数据,也可以等待客户端发送数据后再响应。nimport threadingnimport socketnnudp_socket=Nonenndef send(...
C#:线程(1):什么是线程?我们为什么要使用线程?
最近在看公司上一个项目的源码,让我感觉非常困惑的是,源码中使用了很多多线程的内容,所以给我的感觉是线程一直跳来跳去的,让我感觉到很困惑。于是我就写了这篇博客,希望能够更好的理解线程有关的内容。nn一:什么是线程nn线程是和进程经常放在一起比较的两个概念。按照我的理解,线程和进程并没有本质的区别,都是对CPU调用的单位,其区别只是在于对CPU调用的时间尺度的大小。按照我浅显的理解,进程就是编译器编译...
java多线程基本使用(实际项目中的使用)
(不喜勿喷,不够完善)rnJava多线程实现方式主要有四种:rn1.继承Thread类rn2.实现Runnable接口rn3.实现Callable接口通过FutureTask包装器来创建Thread线程rn4.使用ExecutorService、Callable、Future实现有返回结果的多线程。rn前两种方式线程执行完后都没有返回值,后两种是带返回值的。rn前三种实现方式的比较:rn(1)线程的start()...
python什么时候使用多线程,什么时候使用多进程?
1.多线程使用场景:IO密集型nn2.多进程使用场景:CPU密集型nn小提示:Python中 time.sleep 是阻塞的,都知道使用它要谨慎,但在多线程编程中,time.sleep 并不会阻塞其他线程。n...
多线程执行顺序以及run方法的调用
1.多线程的执行顺序先来看一个例子:public class test {nn public static void main(String[] args) {n System.out.println(Thread.currentThread().getName());n }n}输出结果:main这个例子说明一个问题:一个Java程序至少会有1个线程在运行,就如上面的main()方法,它是...
C++多线程编程经验总结
1.    软件片段的架构是一套控制软件操作的规则、模式、进程、执行协议和断言。n多线程架构:一种将工作模式分解为两个或更多并发执行现场的软件架构。n分解软件:分割为单独逻辑任务的过程,供软件的工作模式来执行。由于软件的数据组织和执行流程依赖于对应的并发或并行化模型的可用性。n2.算法基本执行单元:一条语句(或子语句)n    进程执行基本单元:线程(thread)n    最大执行单元
HashMap中几点需要注意的地方
nHashMap本身的算法保证,会使key hash之后下标的分布尽可能的分散n2倍扩容的做法是为了保证分散性,扩容完成之后,要把原来的节点移动一下,链表的位置要么是原来的位置不动,要么是原来的位置+oldCapn位置相同时,后面的节点用链表挂在下面,当链表长度超过8个时,将链表转为用红黑树存储(jdk1.8之后)nget的时候回根据hash和key共同决定取哪个,先看hash是否相同,再看key...
Android线程的正确使用姿势
进程优先级(Process Priority)进程的优先级从高到低依次分为五类,越往下,在内存紧张的时候越有可能被系统杀掉。简而言之,越是容易被用户感知到的进程,其优先级必定更高。进程的五个常用等级:一.前台进程(Foreground process) n  前台进程是用户当前做的事所必须的进程,如果满足下面各种情况中的一种,一个进程被认为是在前台:进程持有一个正在与用户交互的Activity。进
多线程在spring中的应用
spring 中多线程的应用nn配置文件中开启 @EnableAsyncnnpackage com.example.demo;nnimport org.springframework.beans.factory.annotation.Autowired;nimport org.springframework.boot.SpringApplication;nimport org.springfra...
多线程编程 什么时候使用 lock?
在多线程编程中最难控制的就是对于同一个对象的并发访问(读写),如果同步没有做到位,可能导致意料之外的情况发生。n当所有线程共享一些变量或者对象时,一定要对改变此变量或对象的代码段加锁。nnamespace CheckedAndUncheckedn{n class Programnprivate static int Count = 0;n static void Main(st
C#线程互锁和线程中调用控件实现传值
C#代码。是一个小例子,其中有线程互锁和线程中调用控件实现传值代码。
Android中使用多线程的各种姿势
写在前面:内容主要为黄岳钊老师视频分享课的学习笔记。n1)为什么需要多线程处理?n解决耗时任务 n文件IO、联网请求、数据库操作、RPCn提高并发能力 n同一时间处理更多事情n防止ANR nInputDispatching Timeout:输入事件分发超时5s(触摸或按键) nService Timeout:服务20s内未执行完 nBroadcastQueue Timeout:前台广播10s内未执
多线程中总内存和线程的工作内存
nJava内存模型将内存分为了 主内存和工作内存 。类的状态,也就是类之间共享的变量,是存储在主内存中的,每个线程都有一个自己的工作内存(相当于CPU高级缓冲区,这么做的目的还是在于进一步缩小存储系统与CPU之间速度的差异,提高性能),每次Java线程用到这些主内存中的变量的时候,会读一次主内存中的变量,并让这些内存在自己的工作内存中有一份拷贝,运行自己线程代码的时候,用到这些变量,操作的都是自己...
java--多线程--定时任务调度
nn nnnnQUARTZ 以后再spring 会再见,现在先不管它nn看图
Java异常处理+集合+IO流+多线程+网络编程-Long-专题视频课程
本课程是《Java初级至应用》系统课程的第三模块,全套课程精细讲解,课程超过其他机构30%的课程量,经过我们全套课程系统学习的同学,可轻松从事Java工程师或系统架构师岗位,课程提供全套代码笔记其它相关素材及答疑服务,可谓是低投资高回报!学习前或学习后有任何疑问请在课程中提问,老师看到会第一时间回复!...
为什么需要同步?
上面的图是从《高级编程》中截的图,虽然它是针对线程的,但是这里要说明,不仅仅线程要考虑这个问题,只要涉及到并发的程序,都要考虑同步。比如多进程共享内存,比如某个驱动会同时被打开,而且会被几个进程同时修改驱动中的值或者寄存器......
个推所需要的jar包
java项目个推所需要的相关jar包java项目个推所需要的相关jar包java项目个推所需要的相关jar包
hashmap在多线程时要注意问题
多线程时候hashmap的两个或者多个rehash可能会导致map中同一个buket下链表数据形成一个环,这时在调用get方法时候会出现死循环,倒是cpu100%rn最好使用concurrentHashmap或者hashtable等其他方法使其线程安全rnrnrnhttp://www.07net01.com/2016/04/1440275.html
iOS开发多线程在实际项目中的运用
在实际项目开发中为了能够给用户更好的体验,有些延时操作我们都会放在子线程中进行。n今天我们就来聊聊多线程在实际项目中的运用。
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java项目中怎么学习 公司学习java项目