Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 55f19c3

Browse files
2 parents 732633d + f411dc3 commit 55f19c3

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

‎面试必备/最最最常见的Java面试题总结/第四周(2018年8月30日).md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
2. **可运行(runnable)**:线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取cpu的使用权。
2121
3. **运行(running)**:可运行状态(runnable)的线程获得了cpu时间片(timeslice),执行程序代码。
2222
4. **阻塞(block)**:阻塞状态是指线程因为某种原因放弃了cpu使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有 机会再次获得cpu timeslice转到运行(running)状态。阻塞的情况分三种:
23-
- **(一). 等待阻塞**:运行(running)的线程执行o.wait()方法,JVM会把该线程放 入等待队列(waitting queue)中。
23+
- **(一). 等待阻塞**:运行(running)的线程执行o.wait()方法,JVM会把该线程放 入等待队列(waiting queue)中。
2424
- **(二). 同步阻塞**:运行(running)的线程在获取对象的同步锁时,若该同步 锁 被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
2525
- **(三). 其他阻塞**: 运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
2626
5. **死亡(dead)**:线程run()、main()方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。
@@ -82,10 +82,10 @@ public class Run {
8282
![结果](https://user-gold-cdn.xitu.io/2018/3/20/16243e80f22a2d54?w=161&h=54&f=jpeg&s=7380)
8383
从上面的运行结果可以看出:线程是一个子任务,CPU以不确定的方式,或者说是以随机的时间来调用线程中的run方法。
8484

85-
###2实现Runnable接口
85+
###2实现Runnable接口
8686
推荐实现Runnable接口方式开发多线程,因为Java单继承但是可以实现多个接口。
8787

88-
<MyRunnable.java
88+
MyRunnable.java
8989

9090
```java
9191
public class MyRunnable implements Runnable {
@@ -164,7 +164,7 @@ Thread类中包含的成员变量代表了线程的某些优先级。如**Thread
164164

165165
**如何设置守护线程?**
166166

167-
可以通过调用 Thead 类的 `setDaemon(true)` 方法设置当前的线程为守护线程>
167+
可以通过调用 Thead 类的 `setDaemon(true)` 方法设置当前的线程为守护线程。
168168

169169
注意事项:
170170

@@ -178,7 +178,7 @@ Thread类中包含的成员变量代表了线程的某些优先级。如**Thread
178178
- 两者最主要的区别在于:**sleep方法没有释放锁,而wait方法释放了锁**
179179
- 两者都可以暂停线程的执行。
180180
- Wait通常被用于线程间交互/通信,sleep通常被用于暂停执行。
181-
- wait()方法被调用后,线程不会自动苏醒,需要别的线程调用同一个对象上的notify()或者nofifyAl()方法。sleep()方法执行完成后,线程会自动苏醒。
181+
- wait()方法被调用后,线程不会自动苏醒,需要别的线程调用同一个对象上的notify()或者notifyAll()方法。sleep()方法执行完成后,线程会自动苏醒。
182182

183183

184184
## 9 为什么我们调用start()方法时会执行run()方法,为什么我们不能直接调用run()方法?

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /