黑马程序员技术交流社区
标题:
Java社招编程题求教
[打印本页]
作者:
Alcher
时间:
2016-12-11 15:39
标题:
Java社招编程题求教
假设有一个礼品箱里面有100份礼品,创建两条线程(分别设置线程名称:线程A和线程B)
1)礼品箱有100份礼品,用int num = 100;表示(不用创建礼品箱类直接用int表示)
2)每次取出礼品就用num—模拟
3)每次补充礼品用num++模拟
条件:
1)当礼品箱中礼品的数量等于12份的时候, 线程运行完毕
2)当礼品箱中礼品的数量等于12份的时候线程A不能再从礼品箱中取出礼品
3)当礼品箱中礼品的数量等于12份的时候线程B也不能向礼品箱中添加礼品
4)当线程A执行时要从礼品箱中取一份礼品,当线程B执行时要往礼品箱中补充一份礼品(如果礼品箱中是100份礼品则不用补充礼品)
5)输出格式为:线程X从礼品箱中(取/添加)礼品,礼品箱还有X份礼品
线程A从礼品箱中取礼品,礼品箱还有99份礼品
线程B从礼品箱中添加礼品,礼品箱还有100份礼品
线程A从礼品箱中取礼品,礼品箱还有99份礼品
线程A从礼品箱中取礼品,礼品箱还有98份礼品
作者:
舜乡牛童
时间:
2016-12-12 00:37
有点难度
作者:
Alcher
时间:
2016-12-12 14:06
public class Test {
static int num = 100;
public static void main(String[] args) {
// 取出
new Thread("线程A") {
public void run() {
while (true) {
synchronized ("W") {
if (num > 12) {
num--;
System.out.println(Thread.currentThread().getName()
+ "从礼品箱中取礼品,礼品箱还有" + num + "份礼品");
} else {
break;
}
}
}
};
}.start();
// 添加
new Thread("线程B") {
public void run() {
while (true) {
synchronized ("W") {
if (num > 12 && num < 100) {
num++;
System.out.println(Thread.currentThread().getName()
+ "从礼品箱中添加礼品,礼品箱还有" + num + "份礼品");
} else {
break;
}
}
}
};
}.start();
}
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2