本帖最后由 小石姐姐 于 2019-4-12 09:41 编辑
* 有一个包包的数量为100个。分别从实体店和官网进行售卖!
要求使用多线程的方式,分别打印实体店和官网卖出包包的信息!
分别统计官网和实体店各卖出了多少个包包,例如:
官网共卖出了45个
实体店共卖出了55个*/
public class Package implements Runnable {
int bao = 100;
int guanw = 0;
int shitidian = 0;
@Override
public void run() {
while (true) {
synchronized (this) {
if (bao <= 0) {
break;
}
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
String name = Thread.currentThread().getName();
if ("官网".equals(name)) {
System.out.println(name + "卖了第" + (100 - bao + 1) + "个包,还剩下" + (--bao) + "个");
guanw++;
try {
this.notify();
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if ("实体店".equals(name)) {
System.out.println(name + "卖了第" + (100 - bao + 1) + "个包,还剩下" + (--bao) + "个");
shitidian++;
}
try {
this.notify();
this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
if (bao == 0) {
System.out.println("官网卖了" + guanw + "个");
System.out.println("实体店卖了" + shitidian + "个");
bao--;
this.notifyAll();
}
}
}
}
}
最近学习的多线程 利用各种方式来进行输出,我们继承Runnable 的接口 重写run方法 其实主要学习 的就是重写run方法了 希望这帖子可以有用.
对了 还要新建类来调用它public class Test01 {
public static void main(String[] args) {
Package p = new Package();
new Thread(p,"实体店").start();
new Thread(p,"官网").start();
}
}
|