-
Notifications
You must be signed in to change notification settings - Fork 778
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2019-06-04:请谈谈 Thread 中 run() 与 start() 的区别? #69
Comments
拼写不一样 |
run 只是调用了Thread 的一个方法 start 是同步方法 VM创建/设置的组线程。 |
start():多次启动一个线程是非法的,该方法会做检查弹出Exception;另外,该方法才会实现真正的多线程。 |
run() 和普通的成员方法一样,可以被重复调用。但是如果单独调用 run 方法,则不是在子线程中执行。 start() 这个方法只能被调用一次。调用这个方法后 程序会启动一个 新的线程来 执行 run 方法。注意 :调用start 后,线程处于可运行状态(并没有运行),一旦得到 cup 时间片,就开始执行run 方法,run 方法结束后,线程则立即终止。 |
那我也补充点凑个热闹: 多线程原理:相当于玩游戏机,只有一个游戏机(cpu),可是有很多人要玩,于是,start是排队!等CPU选中你就是轮到你,你就run(),当CPU的运行的时间片执行完,这个线程就继续排队,等待下一次的run()。 调用start()后,线程会被放到等待队列,等待CPU调度,并不一定要马上开始执行,只是将这个线程置于可动行状态。然后通过JVM,线程Thread会调用run()方法,执行本线程的线程体。先调用start后调用run,这么麻烦,为了不直接调用run?就是为了实现多线程的优点,没这个start不行。 |
start是启动线程,run是线程中执行的方法 |
|
简单的说就是 run是线程内需要执行的方法 start是线程的方法 需要记住的就是 启动线程的方法是start,启动后真正执行的方法是run 不要混淆,二者的比较意义不是很大,一个是接口的方法,一个是类的方法 |
2次,不是多次,(isStart){throw new Exception} |
start()和run()方法除了拼写不同还有很多的区别哦😀,(对话2楼)
|
No description provided.
The text was updated successfully, but these errors were encountered: