黑马程序员技术交流社区
标题:
线程估计堵塞了。。谁来帮帮。。感觉不太对啊
[打印本页]
作者:
poi1234bnm
时间:
2016-11-23 14:35
标题:
线程估计堵塞了。。谁来帮帮。。感觉不太对啊
package no2;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class SealTicket {
/**
* 13、编写三各类Ticket、SealWindow、TicketSealCenter分别代表票信息、售票窗口、售票中心。售票中心分配一定数量的票,由若干个售票窗口进行出售,利用你所学的线程知识来模拟此售票过程。
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Ticket ticket = new Ticket();
TicketSealCenter tsc = new TicketSealCenter(ticket);
SealWindow sw= new SealWindow(ticket);
Thread t = new Thread(tsc);
Thread t1 = new Thread(sw);
Thread t2 = new Thread(sw );
Thread t3 = new Thread(sw );
Thread t4 = new Thread(sw );
t1.setName("一号窗口");
t2.setName("二号窗口");
t3.setName("三号窗口");
t4.setName("四号窗口");
t.start();
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class Ticket{
List<String > list = new ArrayList<String>();
String name = "No.";
int tnum =0;
public synchronized void get() {
while(list.size()<1){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println(Thread.currentThread().getName()+"出售"+list.get(0));
list.remove(0);
this.notifyAll();
}
public synchronized void set() {
while(list.size()>5){
try {
this.notifyAll();
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("生产第"+ ++tnum +"张票");
list.add(name+""+tnum);
this.notifyAll();
}
}
class SealWindow implements Runnable{
Ticket ticket ;
public SealWindow(Ticket t) {
super();
this.ticket = t;
}
@Override
public void run() {
// TODO Auto-generated method stub
ticket.get();
}
}
class TicketSealCenter implements Runnable{
Ticket ticket ;
public TicketSealCenter(Ticket t) {
super();
this.ticket = t;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
ticket.set();
}
}
}
结果:
生产第1张票
一号窗口出售No.1
生产第2张票
生产第3张票
生产第4张票
生产第5张票
生产第6张票
生产第7张票
三号窗口出售No.2
生产第8张票
四号窗口出售No.3
二号窗口出售No.4
生产第9张票
生产第10张票
估摸着堵塞了。。但编程的时候自我感觉良好来着。。解决掉这题我就面试社招。。来哥们帮一下。。我币有多。。回答的好有送哦。。
作者:
poi1234bnm
时间:
2016-11-23 14:50
自己顶。。
作者:
poi1234bnm
时间:
2016-11-23 15:03
再顶。。。
作者:
poi1234bnm
时间:
2016-11-23 15:10
顶。。。。。
作者:
poi1234bnm
时间:
2016-11-23 18:13
已解决。。
@Override
public void run() {
// TODO Auto-generated method stub
while(true){
ticket.get();
}
}
作者:
aA772807986
时间:
2016-11-23 22:43
同学,好样的!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2