多线程
多线程
一个进程里面有多个线程,多线程程序
一个线程就是一个任务==run方法
一个线程对象只能启动一次,运行结束后死亡
为什么多线程?
- 快,合理利用cpu,压榨cpu
- 简化编程模型
线程之间能否共享数据
堆里的对象是公用的
栈里的不公用
创建线程
- 继承Threead 任务不同用
通过继承线程对象,实现里面的run方法
创建线程对象
通过start()启动线程
start() - 实现Runnable 任务相同用,一般用这个
通过new Thread(thread).start()
线程的调度
setPriority()设置线程优先级(1~10)
sleep() 线程休眠 释放cpu 不释放锁
yield() 礼让
join() 必须优先把加入的线程任务执行完才会执行其余线程
interrupt() 中断 将isInterrupt() 变为true
isInterrupt() 通过当前线程获取后判断是否自己死掉
setDaemon(true) 其他线程都完了,最后退出
继承和实现接口
实现接口好处:
避免单继承
- 实现Callable
线程安全问题
数据共享是产生
重写规则
重写父类没抛异常,子类也不能抛