代码部落Java火车票 代码部落 李建

java程序设计第一个主类
package testTicket;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Start {
/**
* @param args
*/
public static void main(String[] args) {
ListInteger tickets = new ArrayListInteger();
tickets = Collections.synchronizedList(tickets);
for(int i=100;i200;i){
tickets.add(i);
}
//建立5个售票厅
sellTicket t1 = new sellTicket();
sellTicket t2 = new sellTicket();
sellTicket t3 = new sellTicket();
sellTicket t4 = new sellTicket();
sellTicket t5 = new sellTicket();
//让代码部落Java火车票他们一起卖这100张票 票号100-199
t1.setTickets(tickets);
t2.setTickets(tickets);
t3.setTickets(tickets);
t4.setTickets(tickets);
t5.setTickets(tickets);
//开始卖
t1.start();
t2.start();
t3.start();
t4.start();
t5.start();
}
}
第二个线程类
package testTicket;
import java.util.List;
public class sellTicket extends Thread {
private List t;
public void setTickets(List t){
this.t = t;
}
public void run(){
synchronized(this.t){
while(!this.isInterrupted()){
int lastElement = t.size()-1;
if(!(lastElement==-1)){
//显示售票厅代码部落Java火车票的号码和本次卖代码部落Java火车票的票号
System.out.println(this.getName() " : " t.get(lastElement));
t.remove(lastElement);
try {
t.notifyAll();
t.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}else{
try {
t.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
完全手工打造~~好运~
java中,用static 变量,实现卖火车票,假如有三个窗口,每个窗口都在卖一辆火车的票, 买的票不能重复!public class SaleTicket extends Thread{
static int mark=0;
static int ticket[]=new int [100];
int SaleTicketNo;
SaleTicket(int num){
SaleTicketNo=num;
}
public void run() {
// compute primes larger than minPrime
for(int i=0;i100;i)
{
if(ticket[i]==0){
ticket[i]=1;
mark=mark 1;
System.out.println("售票机编号:" SaleTicketNo "票号:" i "张次:" mark);
}
}
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
【代码部落Java火车票 代码部落 李建】SaleTicket sale1=new SaleTicket(101);
SaleTicket sale2=new SaleTicket(102);
SaleTicket sale3=new SaleTicket(103);
SaleTicket sale4=new SaleTicket(104);
SaleTicket sale5=new SaleTicket(105);
sale1.start();
sale2.start();
sale3.start();
sale4.start();
sale5.start();
}
}
不考虑死锁问题
java编写火车售票系统你说的这个程序应该是不难的,只不过N久没有写过javaswing 了
还有就是java没有多继承的,只有多实现接口的
继承的关键字是:extends
接口的关键字是:interface
Java编程 假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒售出一张票 。package tmp;
public class Test {
private static int k=0;//售出票数
private static int count=1000;//总票数
private static synchronized boolean sell(int n){
if(kcount){
k;
System.out.println("第" n "售票点售出第" k "张票");
return true;
}
return false;
}
static class SellPot extends Thread{//售票点
int n;//售票点编号
public SellPot(int n){
this.n=n;
}
public void run(){
while(sell(n)){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
for(int i=1;i=10;i){
new SellPot(i).start();
}
}
}
//银行汇款
public class Test2 {
private static int k=0;//总汇款
private static synchronized void send(int m,int i,int n){
k =m;
System.out.println("第" n "个顾客进行第" (i 1) "次汇款,银行接收总汇款" k);
}
static class Costum extends Thread{//售票点
int n;//顾客编号
public Costum(int n){
this.n=n;
}
public void run(){
for(int i=0;i3;i){
send(100,i,n);//汇款100
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
for(int i=1;i=3;i){
new Costum(i).start();
}
}
}
java编写的火车票卖票程序 , 用synchronized解决了一张票被卖多次问题,可又发现每次10让每个线程只能买一张 , 买了就解锁 , 然后回到线程池里面等下一次抢到机会 。
关于代码部落Java火车票和代码部落 李建的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读