import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
class Ticket implements Runnable
{
private int tick = 1000;
//
Map<String,Integer> map = new HashMap<String, Integer>();
Object obj = new Object();
public void run()
{
boolean flag = true;
while(flag)
{
synchronized(obj)
{
if(tick>0)
{
String name = Thread.currentThread().getName();
//null , 1, 1
int currentCount = map.get(name)==null?1:map.get(name)+1;
//
map.put(name, currentCount);
// System.out.println(name+"....sale : "+ tick);
tick--;
}else{
flag = false;
}
}
}
}
}
public class ThreadTest
{
public static void main(String[] args) throws IOException, InterruptedException
{
Ticket t = new Ticket();
Thread t1 = new Thread(t);
Thread t2 = new Thread(t);
Thread t3 = new Thread(t);
Thread t4 = new Thread(t);
t1.start();
t2.start();
t3.start();
t4.start();
//
t1.join();
t2.join();
t3.join();
t4.join();
//
for(String name:t.map.keySet()){
System.out.println(name+"--"+t.map.get(name));
}
}
}
:
Thread-3--339
Thread-1--340
Thread-2--242
Thread-0--79