多线程相关概念

Java程序都是从main方法开始顺序执行每行代码,代码执行完成之后,结束整个应用程序。这样顺序执行的程序称为单线程程序,单线程程序在同一个时间内只执行一个任务。在实际处理问题的过程中,单线程程序往往不能适应复杂的业务需求。例如,在WEB项目中,多个用户通过浏览器客户端向服务器端发出请求,如果服务器端采用单线程程序处理用户发送的请求,将会导致用户等待响应时间过长,服务效率低下的问题。要想缩短用户等待时间,提高服务效率,可以采用多线程的程序来同时处理多个请求任务。

多线程程序将单个任务按照功能分解成多个子任务来执行,每个子任务称为一个线程,多个线程共同完成主任务的运行过程。例如,前面提到的WEB项目,服务器端主程序将用户的每个请求创建一个线程(子任务)去处理用户的请求,这样就可以提高服务器端的服务性能,缩短用户等待响应时间。

使用多线程的好处:

 

 使用线程可以增强交互性。使用线程就可以异步 的反方式执行代码。通俗来讲,如果在代码中有一段代码较为耗时,或者需要等待某种条件,如果使用进程,该段代码下面的代码就必须等待该段代码执行完之后才能运行,同时用户鼠标键盘的操作,计算机也不会理会,从来影响交互性。但是如果把耗时的操作放在线程中,他就会独立的运行,线程外的代码就不用等待它运行结束。

减少开销。开启一个线程,就必须给它分配内存空间,如果将多个线程放在同一个进程中,那么这些线程是资源共享的,主要是堆内存中资源,但是栈是一个进程所私有的,不被共享。

现在很多的计算机都是多CPU多内核的。只有在多线程的情况下,他们才能发挥作用,如果使用单线程,就是一种资源的浪费

使用多线程可以简化开发,将可以异步执行的代码分离出来,放在run()方法中,使代码不至于太过复杂,跟容易阅读理解。

原文地址:https://www.cnblogs.com/yhcTACK/p/15435365.html