关于多线程的一道题目

已知有一个球,球编号为A,3个线程同时去取该球,打印拿到该球的线程名称
1.编写球类
2.编写线程类
3.给线程命名
4打印拿到该球的线程名称

public class TestThread {

private static String status = "A";

public static void main(String[] args) {

new Thread(new Runnable() {

@Override

public void run() {

int count=10;

for(int i=0;i<count;){

 synchronized (status) {

  if(status.equals("A")){

   System.out.print("A");

   status="B";

   i++;

  }

 }

}

}

}).start();

new Thread(new Runnable() {

@Override

public void run() {

int count=10;

for(int i=0;i<count;){

 synchronized (status) {

  if(status.equals("B")){

   System.out.print("B");

   status="C";

   i++;

  }

 }

}

}

}).start();

new Thread(new Runnable() {

@Override

public void run() {

int count=10;

for(int i=0;i<count;){

 synchronized (status) {

  if(status.equals("C")){

   System.out.print("C");

   status="A";

   i++;

  }

 }

}

}

}).start();

}

哪个取到球哪个就把回调方法使用就是了

几个问题:
1.用java?
2.球类有哪些字段?
3.如果是3个线程同时去取这个球,那这个球需不需要加锁,如果加锁那就是只有一个线程取到(哪个先抢到cpu时间哪个取),如果不加锁很有可能出现多个线程取到球

在球类中写一个方法①,方法直接调用 Thread.currentThread().getName()就能获取当前线程的名字了(哪个线程调用方法①就获取那个线程名字),最后在run()方法中调用方法①即可(你想线程一起干活就不加锁,想一个一个干活就加锁)