java中啥叫做线程?啥叫多线程?多线程的特点是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中啥叫做线程?啥叫多线程?多线程的特点是啥?相关的知识,希望对你有一定的参考价值。

参考技术A

线程的概念:Thread  每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。进程也可能是整个程序或者是部分程序的动态执行。

多线程的概念:  多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。


多线程的特点:使用线程可以把占据长时间的程序中的任务放到后台去处理  


用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度 。


程序的运行速度可能加快  ·在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。


在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

线程定义比较抽象,简单的说就是一个代码执行流。许多执行流可以混合在一起由CPU调度。线程是允许各种任务交互执行的方式。



Java的线程在操作系统的实现模式依系统不同而不同,可能是系统级别的进程或线程,但对于程序员来说并没有影响。



任务交互的一个好处是增加程序响应。如一个界面程序执行一段耗时的数据库查询,使用单独的线程可以让界面依然响应用户的其他输入,而单线程只能等待查询结束再处理。



JVM以及操作系统会优先处理优先级别高的线程,但不代表这些线程一定会先完成。设定优先级只能建议系统更快的处理,而不能强制。



另外,在运行时,并没有按照函数分界,而是按照机器码/汇编码分界。也就是说不保证任何一段代码是被完整而不打断的执行的(除非你已经使用同步手段)。正由于如此,各种线程同步的方法应运而生。

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

如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。因此我们可以用多线程处理并发运行,提高资源利用率;
举例
 假如有一个工厂,工厂里面有10个工人,每个工人同时只能做一件任务。
  因此只要当10个工人中有工人是空闲的,来了任务就分配给空闲的工人做;
  当10个工人都有任务在做时,如果还来了任务,就把任务进行排队等待;
  如果说新任务数目增长的速度远远大于工人做任务的速度,那么此时工厂主管可能会想补救措施,比如重新招4个临时工人进来;
  然后就将任务也分配给这4个临时工人做;
  如果说着14个工人做任务的速度还是不够,此时工厂主管可能就要考虑不再接收新的任务或者抛弃前面的一些任务了。
  当这14个工人当中有人空闲时,而新任务增长的速度又比较缓慢,工厂主管可能就考虑辞掉4个临时工了,只保持原来的10个工人,毕竟请额外的工人是要花钱的。
参考技术A 在早期单核架构的系统中 多线程并发可能并不会比协同之类的有更高的执行效率,但在现代多核时代 多线程可以让程序更好的应用计算机多核的能力,可以把一部分的计算量分担到其他cpu上,减少主cpu的计算量从而达到减少运算时间
好处的话 简单来说就是快
但是坏处也带来不少 多线程运算 需要注意线程间的调度和协作 需要处理好多线程共享的变量,需要处理好变量锁 有的时候没处理好甚至可能导致死锁或者其他问题
参考技术B 多线程的并发运行就相当一边干这一边干那,可以同时处理2个行为逻辑。本回答被提问者采纳 参考技术C 主要是为了提高CPU利用和吞吐量(throughput)。
从性能的角度看,假设只有一个CPU core,一个任务需要100ms,处理耗时10ms,文件读写、网络或数据库等待90ms,如果单线程则每秒只能处理10个任务(tps=10),从CPU能力看,每秒能处理100(1000/10)个任务,这时候,你起10个线程并发处理,就能达到100 tps (CPU占用100%)。
如果是纯粹计算,自己想想会是什么结果。。。

以上是关于java中啥叫做线程?啥叫多线程?多线程的特点是啥?的主要内容,如果未能解决你的问题,请参考以下文章

多线程是啥

JAVA-基础-多线程

java多线程-面试相关

java中啥同步啥是异步分别用在啥地方

Java 多线程编程

多线程和多进程分别是啥意思?