基于白嫖黑马程序员白嫖视频:全面深入学习java并发编程,java基础进阶中级必会教程
目录
1 start
- start方法是线程运行的方法,但是不是马上运行,而是告诉任务调度器,该线程可以被执行了;
- start方法只能启动一次;
2 sleep
- 从线程从Running状态进入Timed Waiting状态;
- 参数是毫秒值;
- 可能会抛出InterruptedException异常;当在休眠时被interrupt()了;
- Thread.sleep()在哪个线程里面被调用,哪个线程就休眠多久;
- 实际场景:当有while(true)这样的监听结构的时候,最好设置sleep;
3 interrupt
- 打断sleep:当在sleep中时线程被调用interrupt()时,就马上会放弃暂停的状态并抛出InterruptedException。但是isInterrupted还是false;
- 打断join:当线程以join()等待其他线程结束时,当它被调用interrupt(),它与sleep()时一样,会马上跳到catch块里。但是isInterrupted还是false;
- interrupt() 方法只是改变中断状态而已,它不会中断一个正在运行的线程;
- 对于Running的线程,仅仅是将其isInterrupted()设置为true;
- 和interrupted区别,interrupted获取完之后会清除打断标记;
4 yield
- 调用该方法使得该进程从Running进入Runnable状态,然后执行其他线程;
- 被naive修饰,具体实现依赖OS的任务调度器;
5 setPriority
- 设置线程的优先级,一共10级(1-10),最好使用MIN_PRIORITY、NORM_PRIORITY、MAX_PRIORITY来设置;
6 join
- 用来同步线程,比如t1.join(),就是本程序等待t1执行结束了,再执行t1.join()下面的代码程序;
- 理解:t1在干其他的事情,等他干完了,就加入(join)回来,我继续执行。
- join(long n)是有时限等待,等了n毫秒之后如果没有执行完,还是继续执行我后面的代码;
7 setDaemon
- 设置守护线程,只要其他非守护线程运行结束了,它就被会强制结束;
- 典型引用:JVM的垃圾回收器;