关于多线程的一道题目

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

5个回答

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();

}

如果是Java
1.生成三个线程
2.生成一个球类并写下加锁的方法
3.三个线程调用该方法。

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问