Runnable表示可运行状态,表示一个线程处于就绪(Ready)态或者运行中(Running)
Thread.sleep(long) //运行状态转换为超时等待状态,也是阻塞状态,也就是调用的线程阻塞在这,就不会往下执行了,long指休眠时间,单位毫秒,
过了这个时间,就转为就绪态了
thread.join() // 实例方法,让当前(也就是.前面的thread线程)线程等待子线程执行完毕,也是阻塞状态,如果括号内有时间,那么是超时等待;没有时间,那就是等待,
表示阻塞当前线程,而等待引用线程执行完毕
thread.yield() //当前线程由运行态转变为就绪态,让出当前的时间片,用于线程让步
thread.interrupt() //终止这个线程 ,非静态方法,前面需要有引用,也就是线程需要被声明一下
Thread.interrupted() //测试当前线程是否中断
thread.isInterrupted() //测试这个线程是否被中断
start() 线程转变为Runnable(运行态和就绪态)
线程的中断:(三种中断方法)
1、通过标志位来进行中断
2、通过stop()来进行停止(被废弃掉)
3、tread.interrupt() //表示一个中断线程的动作
Thread.currentThread.isInterrupted()
Thread.interrupted()
4、其实interrupt()操作并不是真的把线程中断掉了,只是把标志位给修改了,如果遇到sleep()/wait()/join()线程进入阻塞状态,就会抛出异常,异常会重置标志位
5、interrupted()是一个静态方法,不管之前的标志位是true 还是 false都先返回,然后再把标志位全部重置为false
6、isInterrupted()是一个实例方法,它什么都没有做,就直接返回标志位