线程、多线程是什么?多线程的优点缺点?什么时候使用多线程?线程池是什么?如何实现多线程?
线程是什么?
线程是进程中的一条执行路径,或者说是一个进程中独立运行的最小单位,比如:我们使用迅雷下载文件,迅雷支持同时下载多个文件,文件数也是可以自定义的,每一个文件的下载就是一个线程,而迅雷这个软件就是一个进程。
多线程是什么?
多线程:一个进程中同时有多个线程正在执行
为什么要使用多线程?
在一个程序中,有很多的操作是非常耗时的,如数据库读写操作,IO操作等,如果使用单线程,那么程序就必须等待这些操作执行完成之后才能执行其他操作。使用多线程,可以在将耗时任务放在后台继续执行的同时,同时执行其他操作。
例子:线程A被CPU执行,但是线程A中有一个IO操作,时间花费远远大于CPU的执行时间,所以后面的线程只有等待线程A执行完毕之后,才有机会执行,这种单线程执行的方式(同步)无法高效利用CPU,时间浪费也太多,而且用户需要等待,所以使用多线程处理顺应趋势。
什么场景需要使用多线程?
解析:1 耗时的操作使用线程,提高应用程序响应 2 并行操作时使用线程,如C/S架构的服务器端并发线程响应用户的请求。 3 多CPU系统中,使用线程提高CPU利用率 4 改善程序结构。一个既长又复杂的进程可以考虑分为多个线程,成为几个独立或半独立的运行部分,这样的程序会利于理解和修改。 其他情况都使用单线程。(该解释来源于网络)
多线程优点?
可以提高程序的效率。
多线程的缺点?
1.使用太多线程,是很耗系统资源,因为线程需要开辟内存。更多线程需要更多内存。
2.影响系统性能,因为操作系统需要在线程之间来回切换。
3.需要考虑线程操作对程序的影响,如线程挂起,中止等操作对程序的影响。
4.线程使用不当会发生很多问题。
什么是线程池?
创建线程要花费昂贵的资源和时间,如果任务来了才创建线程那么响应时间会变长,而且一个进程能创建的线程数有限。为了避免这些问题,在程序启动的时 候就创建若干线程来响应处理,它们被称为线程池
类比:可以做一个类比,比如当你做饭的时候,如果每次都是去很远的地方挑水,那么时间成本就很大,但是如果在做饭之前就打好了一桶水,随时要用就随时取
实现多线程的方式?
实现runable接口,并实现该接口的run()方法
继承thred类,重写run()方法
实现callable接口,重写call()方法