回顾线程基本内容
程序: 静态代码 安装在硬盘上的
进程: 运行中的程序 是操作系统分配内存空间的单位
线程: 线程是进程中的一个最小执行单位, 是cpu调度单位 线程依赖于进程
创建线程
1.线程类 继承 Thread
-
类 实现 Runnable接口 重写 run( )
创建Thread类的对象,为其分配任务
-
类 实现 Callable接口 重写 call( ) 有返回值 可以抛出异常
创建Thread类的对象,为其分配任务
常用方法
run() calll() start()
设置名字
设置优先级
线程状态
start() 就绪状态
join() sleep() 阻塞状态
yield() 线程让步 运行状态 主动让出 —>就绪状态
多线程
程序中如果同时有多个任务执行,需要多线程
多线程可以提高程序运行效率
提高cpu利用率
不足:
对cpu 内存的要求增加了
多线程同时访问同一个共享资源
线程安全问题:
多线程且多个线程访问同一个共享数据.
解决办法 排队+锁
Synchronized 关键字 修饰方法 修饰一个代码块
是隐式锁 自动加锁 自动释放锁
ReentrantLock
只能对某段代码加锁 是显示锁 手动添加 手动释放
守护线程
死锁
线程通信
wait() notify()
sleep() 休眠指定的时间 时间到了后,会进入到就绪状态 不会释放锁
wait() 让线程等待 必须需要通过notify()唤醒 等待时会释放锁
生产者 消费者问题