黑马程序员技术交流社区
标题:
模拟一个火车站卖票程序,需求5个窗口,需要多线程完成
[打印本页]
作者:
肚小糖
时间:
2015-9-14 16:11
标题:
模拟一个火车站卖票程序,需求5个窗口,需要多线程完成
本帖最后由 肚小糖 于 2015-9-16 10:03 编辑
public class Demo28 {
public static void main(String[] args) {
Ticket t = new Ticket(100);
for(int i=0; i<5; i++){
new Thread(t).start();
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
}
}
}
class Ticket implements Runnable{
private int num;
boolean flag = true;
public Ticket(int num){
this.num = num;
}
public int getNum(){
return num;
}
public void run(){
if(flag){
while(true){
synchronized(this){
if(num > 0){
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"----"+num--);
}
else{
break;
}
}
}
}
}
}
复制代码
这样对不对?
作者:
675355835
时间:
2015-9-14 19:42
nbbbbbbbbbb
作者:
fmi110
时间:
2015-9-14 20:24
用了lock锁 为什么还要用synchronized同步代码块呢?
作者:
boboyuwu
时间:
2015-9-14 20:42
真的不知道你要干什么 代码写的一点意义都没有
作者:
fmi110
时间:
2015-9-14 20:48
//public class Temp {
// public static void main(String[] args) {
//
// }
//}
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class Temp {
public static void main(String[] args) {
Ticket t = new Ticket(100);
for(int i=0; i<5; i++){
new Thread(t,"窗口"+i).start();
try{
Thread.sleep(200);
}catch(InterruptedException e){
e.printStackTrace();
}
// t.flag = false;//设为flase会导致只有第一个线程能进入if(flag),后面的线程无法运行,如图所示
}
}
}
class Ticket implements Runnable{
private int num;
private String id;
boolean flag = true;
Lock lock = new ReentrantLock();
Condition con = lock.newCondition();
public Ticket(int num){
this.num = num;
}
public int getNum(){
return num;
}
public void run(){
// lock.lock();
if(flag){
while(true){
synchronized(this){
if(num > 0){
try{
Thread.sleep(20);
System.out.println(Thread.currentThread().getName()+"----"+num--);
}catch(InterruptedException e){
e.printStackTrace();
}
// lock.unlock();
this.notifyAll();
// break; //break会当前进程
}
else{
// lock.unlock();
break;
}
}
}
}
}
}
复制代码
1.png
(2.82 KB, 下载次数: 31)
下载附件
2015-9-14 20:48 上传
2.png
(3.46 KB, 下载次数: 26)
下载附件
2015-9-14 20:48 上传
作者:
chenyannna
时间:
2015-9-14 20:59
几个窗口就是几个啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2