多线程停止线程
- stop方法已经过时不能使用,只能当run方法结束时,才能终止线程。开启多线程程运行时,代码通常是循环结构,只要控制住线程,通常可以让run方法结束。
- 应当设计可以修改的无限循环标志。跳出无限循环,则会终止线程。
- 当线程在循环内进入等待状态时,及时线程的循环条件不满足,必须终止线程,但是无法执行到判断语句进行线程的终止,此时,必须使用interrupt()函数来达到要求。
- interrupt将处于冻结状态的线程强制转换到运行状态。此时wait()就会跑出我们处理已久的中断异常。
- 当没有指定的方式让冻结的线程回复到运行状态时,这是需要对冻结进行清除。Thread提供了interrupt方法。
多线程 守护线程
- 守护线程就是后台线程,也是一种依赖线程
- 特点:
当前台线程结束后,后台线程会自动终止,作为依赖线程,守护线程,不用强调结束。 - 方法:
setDemon()设置某个线程为守护线程
多线程join方法
- t1.join() t1抢夺cpu执行权,主线程处于冻结状态,t1优先执行。相当于顺序执行两个线程。主线程碰到谁的join就会等谁执行。
- 当A线程执行到了B线程的Join方法时,A线程就会等待,等B线程都执行完成,A才会执行。join才会临时加入线程执行。当B线程进入wait时,A线程也能继续执行。
- toString 方法能够显示线程的名称,线程的优先级,线程当前的分组(线程组谁调用就是谁的线程组的)
- 所有线程包括主线程,默认是5。数越大优先级越高。MAX_PRIORITY,MIN_PRIORITY,
- yield()方法,当线程读到这里是,会释放执行权。这样会使所有的线程都有平均执行的效果。
什么时候会使用到多线程
- 当程序独立运算相互之间不相关的时候,可以用多线程封装一下,提高程序执行的速度