关于线程的常见方法
| Start只一次 | 启动到就绪, start是开启父线程去执行run方法 |
|---|---|
| Run | 直接调用由主线程运行 |
| Join | 等待线程结束,获得线程结果 |
| Getid/getname/setname | thread |
| Get/setpriority | |
| Getstatus | |
| isinterrupted | 有没被打断过 |
| isAlive | 活着么 |
| Interrupt/interrupted | 动作 |
| currentThread | 获取当前线程 |
| Sleep | |
| yield | 礼让 |
查看源码去!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
| Start vs run | 直接run是main线程执行的, 没有达到异步的目的///start才是创建一个新线程执行 |
|---|---|
| Sleep vs yield | Thread.sleep在哪调用就sleep哪 从 running->timed waiting
|
|
|----|----|
| Join | main中写t1.join(),那么主线程会等待这行代码执行完,才会往下走 |
|---|
| Join(long n) | 等待该线程走完, 最多等待n秒, n秒后直接向下走,不等了 也就是说thread=sleep(2s),sout("nihao") |
|---|
Sleep,wait,join被打断后会抛出异常,并且重置isinterrupted的状态为false
抛异常 = 已处理 = 状态复位。
main线程执行t1.interrupt(),
那么此时t1.isInterrupt()会设置为true,
T1线程可以根据isInterrupt自行判断是否需要结束自己
