java中多线程地并发运行是什么意思?有什么作用.好处?

2025-02-26 09:48:30
推荐回答(4个)
回答1:

如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。因此我们可以用多线程处理并发运行,提高资源利用率;
举例
 假如有一个工厂,工厂里面有10个工人,每个工人同时只能做一件任务。
  因此只要当10个工人中有工人是空闲的,来了任务就分配给空闲的工人做;
  当10个工人都有任务在做时,如果还来了任务,就把任务进行排队等待;
  如果说新任务数目增长的速度远远大于工人做任务的速度,那么此时工厂主管可能会想补救措施,比如重新招4个临时工人进来;
  然后就将任务也分配给这4个临时工人做;
  如果说着14个工人做任务的速度还是不够,此时工厂主管可能就要考虑不再接收新的任务或者抛弃前面的一些任务了。
  当这14个工人当中有人空闲时,而新任务增长的速度又比较缓慢,工厂主管可能就考虑辞掉4个临时工了,只保持原来的10个工人,毕竟请额外的工人是要花钱的。

回答2:

在早期单核架构的系统中 多线程并发可能并不会比协同之类的有更高的执行效率,但在现代多核时代 多线程可以让程序更好的应用计算机多核的能力,可以把一部分的计算量分担到其他cpu上,减少主cpu的计算量从而达到减少运算时间
好处的话 简单来说就是快
但是坏处也带来不少 多线程运算 需要注意线程间的调度和协作 需要处理好多线程共享的变量,需要处理好变量锁 有的时候没处理好甚至可能导致死锁或者其他问题

回答3:

多线程的并发运行就相当一边干这一边干那,可以同时处理2个行为逻辑。

回答4:

主要是为了提高CPU利用和吞吐量(throughput)。
从性能的角度看,假设只有一个CPU core,一个任务需要100ms,处理耗时10ms,文件读写、网络或数据库等待90ms,如果单线程则每秒只能处理10个任务(tps=10),从CPU能力看,每秒能处理100(1000/10)个任务,这时候,你起10个线程并发处理,就能达到100 tps (CPU占用100%)。
如果是纯粹计算,自己想想会是什么结果。。。