Thread类中有start()方法吗
时间: 2024-06-02 11:08:33 浏览: 16
是的,Java中的Thread类有start()方法。start()方法是Thread类中的一个重要方法,它用于启动一个新的线程并调用run()方法。在调用start()方法后,线程会被放入就绪队列中,等待CPU调度执行。一旦线程被调度执行,它会自动调用run()方法。需要注意的是,直接调用run()方法并不会启动新的线程,而只是在当前线程中执行run()方法的代码。
相关问题
thread类的start方法实现
start方法是Thread类的重要方法之一,它的作用是启动一个线程并使它进入“就绪”状态。start方法的实现如下:
1. 首先判断当前线程是否为“新建”状态,只有“新建”状态的线程才能被启动,否则会抛出IllegalThreadStateException异常。
2. 将当前线程加入执行队列中,并调用native方法start0()启动线程。
3. start0()方法会在新的线程中执行run()方法。
代码实现如下:
```
public synchronized void start() {
if (threadStatus != 0)
throw new IllegalThreadStateException();
group.add(this);
boolean started = false;
try {
start0();
started = true;
} finally {
if (!started) {
group.threadUnmap.remove(this);
threadStatus = 0;
}
}
}
```
其中,start0()方法是一个本地方法,由Java虚拟机实现,它的实现方式与操作系统有关。在Windows平台下,start0()方法会使用Win32 API函数CreateThread()创建一个新线程;在Linux平台下,start0()方法会使用pthread_create()函数创建一个新线程。需要注意的是,由于start0()方法是一个本地方法,因此它是不可见的,我们无法在Java中直接调用它。
thread类中的start 和run
start和run是Thread类中的两个方法。
start方法用于启动一个新的线程,并在新的线程中执行run方法。当调用start方法时,会创建一个新的线程,并在新的线程中执行run方法。start方法会立即返回,不会等待run方法执行完毕。
run方法是线程的主体方法,用于定义线程的执行逻辑。当线程启动后,会自动调用run方法,在该方法中执行线程的任务。run方法执行完毕后,线程就会结束。
需要注意的是,不要直接调用run方法,否则会在当前线程中执行run方法,而不会创建新的线程。正确的做法是调用start方法,让系统自动创建新的线程并执行run方法。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)