目录
多线程的概念
同时执行多个任务
快 cpu利用率
线程之间对共享资源的访问会互相影响
并发 同一个时间段内依次执行 一个一个来
并行 多人做不同的事
线程同步
多线程同步:即多个线程同时读取同一份共享资源时,可能会引起冲突
解决方法:排队加锁
变成一个一个解决 而不是同步解决
那个线程获取到了这把锁 才有权利访问该共享资源
synchronized(锁对象)关键字 (修饰一段代码块 或者 方法)
修饰方法时 锁对象是this.
锁对象:多个线程对应的是同一个对象,用来记录有没有对象进入到代码块中
两个线程对一个任务进行访问 this 指的是 这一个任务
Lock
juc(并发)
ReentrantLock显示加锁 释放锁
死锁
多个线程分别占用对方需要的同步对象不放手
也不会报错提示 相互等待对方释放锁
线程通信
wait()后锁会被释放
notify() 唤醒线程
来自Object类中的方法
交替线程执行任务
新增创建线程方式
Runable不能放回结果 异常只能自己处理
新的方式
Callable接口
可以返回结果 和泛型
FutureTask
new Thread(futuretask)
FUtureTask.get() 得到返回结果