当前位置: 代码迷 >> J2SE >> 请教JAVA多线程实现一边。一边。大概的思路是什么
  详细解决方案

请教JAVA多线程实现一边。一边。大概的思路是什么

热度:68   发布时间:2016-04-23 20:31:11.0
请问JAVA多线程实现一边。。。一边。。。大概的思路是什么?
我是初学者。
翻了翻网上一堆资料都是在讲基本概念,没看到有实例= =。
比如实际一点,现在不是世界杯嘛:两个足球运动员同时去抢一颗足球。


A implements Runnable
{
       public void run()
       {
               //A抢球
       }
}



B implements Runnable
{
       public void run()
       {
               //B抢球
       }
}



Runnabele rA = new A();
Runnable rB = new B();
Thread A = new Thread(rA);
Thread B = new Thread(rB);

A.start();
B.start();


看书上说,上面这样虽然是把多个线程启动了,
但是具体怎么并发,谁先做,谁后做,怎么在两个线程中来回转换,以及是不是会同时完成,
都取决于JVM,而我们无法直接控制。
那如果我想要实现同时做什么的话,用线程岂不是不能准确完成?还麻烦大家指导我。
------解决方案--------------------
多线程就是多个任务同时进行。但是如果你希望实现下面这种情况的话,则需要进行同步控制:

如:A 和 B 两个人做4个任务(1、2、3、4)
A做1、3,B做2、4
必须1和2都完成了之后再开始做3和4。

这种情况就需要在关键节点进行同步控制了。你可以看看同步的概念。
------解决方案--------------------
像这种:要么A有球,要么B有球的情况,那么只要互斥就行了。在方法上,用synchronized来控制就可以了。
还有一种是:A持球多少分钟,然后给B持球多少分钟,然后再给A,这样反复运行。这就需要在互斥的基础上,加上线程通信了。可以用wait()、notify()来通信