Thred类位于java.lang包下,我们可以打开java.lang.Thread这个类,查看一下它的源码,尤其是它的类描述:
A thread is a thread of execution in a program. The Java Virtual Machine allows an application to have multiple threads of execution running concurrently.
翻译为中文即:
线程是程序中的执行线程。Java虚拟机允许应用程序同时运行多个执行线程。
讨论Thread类存在的意义,我觉得可以从以下几个方面考虑:
实现了java.lang.Runnable
我们看看java.lang.Runnable接口的注释:
The Runnable
interface should be implemented by any* class whose instances are intended to be executed by a thread. The* class must define a method of no arguments called run
.
Runnable接口应该由其实例要由线程执行的任何类实现。类必须要实现run()方法。
所以当Thread类实现了Runnable接口,且实现了run()方法时候,我们就可以:
创建一个线程来执行要执行的事情。
线程类到底能干嘛?
当你启动一个Java应用的时候,代表着一个进程的运行。一个进程里面可以同时做很多事情,比如在Java Web应用,一个接口同时可以有很多人访问,你在访问A接口的同时可能也在访问B接口,也就是同一个进程可以执行多个任务,这多个任务通过什么方式来执行的呢?每个任务都创建或者依托于一个线程来执行。在不考虑线程池的情况下,多个任务执行即代表多个线程在执行。
所以线程类是程序执行的基本单元,是程序调度CPU的基本单位。
多线程的意义
在单核CPU下,多个线程同时并行请求CPU资源是需要等待的,根据线程的优先级以及分配的时间片等来决定是获取到CPU资源执行任务还是等待其他线程释放资源后等待CPU调度。
在多核CPU下,在同一个时刻,注意这里是同一个时刻,几核CPU就可以同时并发执行几个线程,这样就极大的提高了程序的执行效率,更是充分、有效的的利用了CPU的资源。
所以,相信大家也明白了Java中Thread类存在的意义,Java作为高级语言,服务端霸主,必然要支持现代多核CPU操作系统,那么自然需要在多线程、并发编程这一块要充分支持好,因此就有了Thread这个线程基础类。在这个基础类上我们可以做很多的工作。