多线程基础
为什么要使用多线程程,提高资源利用率,让原来串行的代码并行执行提高效率.
使用多线程
继承Thread类或者实现Runnable接口
线程安全:简单理解多线程情况下无论怎样执行和单线程执行结果是一样的,就是线程安全的,如果数据变的不一样了就不是线程安全的了
常用方法
currentThread() //当前正在执行的线程
isAlive() //判断当前线程是否处于活动状态 已经启动尚未停止
sleep() // 让正在执行的线程休眠,可以指定休眠的时间
getId() //获取线程唯一标识
//----------停止线程-----------------------------
interrupt() //给当前线程打一个中断标记
this.interrupted() //测试当前线程是否已经中断 会清除线程中断状态
this.isInterrupted() //测试线程是否已经中断 不会清除线程状态
//sleep状态打断调用interrupt 会抛出异常,并清除停止状态 个人理解只有alive状态才可以打断
stop() //暴力停止,数据可能被破坏
return;与interrupt() //一起使用可以停止线程
//推荐用法 抛异常方式可以使线程停止事件传播
suspend() //暂停线程
resume() //恢复线程 使用不当会导致线程独占;也可能导致数据不同步问题
yeild() //放弃当前CPU资源,但是下次会不会被调度得看OS调度了
setPriority() //设置优先级 谁创建的线程,线程的优先级就跟谁一样 优先级高调度概率高