我是初学者。
翻了翻网上一堆资料都是在讲基本概念,没看到有实例= =。
比如实际一点,现在不是世界杯嘛:两个足球运动员同时去抢一颗足球。
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()来通信