正文
java跑火车的代码 java编程火车购票系统代码
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
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线程问题
三个线程共享countjava跑火车的代码, 但count++不是原子操作java跑火车的代码,包括count与比较sum时候 也是java跑火车的代码, 会导致出现多线程问题。 要用AtomicInteger
class Alive_2 implements Runnable {
static private int sum = 20;
AtomicInteger count = new AtomicInteger(0);
public void run() {
for (int tick = count.incrementAndGet(); tick = sum; tick = count.incrementAndGet()) {
System.out.println(Thread.currentThread().getName() + "窗口卖出" + tick + "张票");
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
}
}
}
AtomicInteger 中incrementAndGet 和 getAndIncrement 可以根据实际需要使用。
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("售票机编号java跑火车的代码:"+SaleTicketNo+" 票号java跑火车的代码:"+i+" 张次java跑火车的代码:"+mark);
}
}
}
}
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
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跑火车的代码和java编程火车购票系统代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。