一个基于atomic的卖票测试

时间:2023-03-10 00:13:11
一个基于atomic的卖票测试

package testAtomic;

import java.util.concurrent.atomic.AtomicInteger;

import sun.security.krb5.internal.Ticket;

public class Tictit {
private AtomicInteger ticitNumber;
public Tictit (AtomicInteger ticAtomicInteger)
{
this.ticitNumber=ticAtomicInteger;
}
public AtomicInteger getTicitNumber() {
return ticitNumber;
}

package testAtomic;

public class MyThread implements Runnable {

private Tictit tictit=null;
public MyThread(Tictit tictit)
{
this.tictit=tictit;
}
public void run() {
for(int i=0;i<10;i++)
{
if(tictit.getTicitNumber().get()>0)
{
int a=tictit.getTicitNumber().addAndGet(-1);

System.out.println("当前线程:"+Thread.currentThread().getName()+" "+a);
}
}

}

}

package testAtomic;

import java.util.concurrent.atomic.AtomicInteger;

public class MyAotomicTest {
int number=10;
public static void main(String []args)
{
MyAotomicTest test=new MyAotomicTest();
Tictit tictit=new Tictit(new AtomicInteger(100));

MyThread myThread=new MyThread(tictit);
Thread []threads=new Thread[test.number];

for(int i=0;i<threads.length;i++)
{
threads[i]=new Thread(myThread,"第"+i+"个线程");
}
for(int i=0;i<threads.length;i++)
{
threads[i].start();
}

}
}