1.线程间通信
等待唤醒举例: 做包子吃包子
package Part2.Day_22;
public class Baozi {
String pi;
String xian;
boolean flag = false;
}
package Part2.Day_22;
/*
包子铺和吃货的关系,-->通信互斥
同时同步技术保证两个线程只有一个在通信
可以用包子作为锁对象
包子铺和吃货类需要用包子作为对象传递
*/
public class Baozipu extends Thread{
private Baozi bz;
public Baozipu(Baozi bz){
this.bz = bz;
}
@Override
public void run() {
int count = 0;
while(true){
synchronized (bz){
if (bz.flag == true){
try {
bz.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
//被唤醒之后执行,wait之后
//交替生成两种包子
if (count%2 == 0){
bz.pi ="薄皮";
bz.xian="三鲜馅";
}else {
bz.pi = "冰皮";
bz.xian = "牛肉大葱";
}
count++;
System.out.println("包子铺正在生成:"+bz.pi+bz.xian+"包子");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
bz.flag = true;
bz.notify();
System.out.println("包子铺生产好了"+bz.pi+bz.xian+"包子,吃货可以开始吃了");
}
}
}
}
package Part2.Day_22;
public class Chihuo extends Thread{
private Baozi bz;
public Chihuo(Baozi bz){
this.bz = bz;
}
@Override
public void run() {
//设置线程任务
while (true){
synchronized (bz){
if (bz.flag == false){
try {
bz.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("吃货正在吃:"+bz.pi+bz.xian+"的包子");
bz.flag = false;
bz.notify();
System.out.println("吃货已经把"+bz.pi+bz.xian+"包子吃完了,包子铺开始生产新包子");
System.out.println("--------------------------");
}
}
}
}
package Part2.Day_22;
public class demo {
public static void main(String[] args) {
Baozi bz =new Baozi();
new Baozipu(bz).start();
new Chihuo(bz).start();
}
}
/*
包子铺正在生成:薄皮三鲜馅包子
包子铺生产好了薄皮三鲜馅包子,吃货可以开始吃了
吃货正在吃:薄皮三鲜馅的包子
吃货已经把薄皮三鲜馅包子吃完了,包子铺开始生产新包子
--------------------------
包子铺正在生成:冰皮牛肉大葱包子
包子铺生产好了冰皮牛肉大葱包子,吃货可以开始吃了
吃货正在吃:冰皮牛肉大葱的包子
吃货已经把冰皮牛肉大葱包子吃完了,包子铺开始生产新包子
--------------------------
包子铺正在生成:薄皮三鲜馅包子
包子铺生产好了薄皮三鲜馅包子,吃货可以开始吃了
吃货正在吃:薄皮三鲜馅的包子
吃货已经把薄皮三鲜馅包子吃完了,包子铺开始生产新包子
--------------------------
包子铺正在生成:冰皮牛肉大葱包子
包子铺生产好了冰皮牛肉大葱包子,吃货可以开始吃了
吃货正在吃:冰皮牛肉大葱的包子
吃货已经把冰皮牛肉大葱包子吃完了,包子铺开始生产新包子
*/
2.线程状态概述
3.Object类中wait带参方法和notifyAll方法
4.线程池
5.Lambda表达式
不得不使用匿名内部类重写一遍
6.转换编程思想
JAVA8 JDK1.8 Lambda表达式,函数式编程思想
lambda标准思想:
7.Lambda表达式省略格式,以及lambda使用前提