前文我们已经解释了线程的概念,并且建立了一个简单的单线程游戏,这篇文章我们将主要介绍多线程中我们会遇到的一些问题
首先,通过sleep,我们已经实现了让各线程“同时”运行,那么,我们关注的问题就只剩下两个。
第一,如何让线程之间数据互认,不能a线程中的数据只在a线程中,必须让各线程有效地互动起来。
public BulletAI(Vector<Ball> vector, Ball ball) {
this.vector = vector;
this.ball = ball;
}
但这个问题听起来洋气,实际上却和我们平时做的让各个类直接相互沟通没什么区别,只要注意把各个类添加上共同部分就可以了
第二,如何让线程同时停下,也就是我们经常需要解决的暂停问题
这里有两种情况
情况a,直接让线程sleep
if(暂停情况)
{
while(true)
{
sleep(1);
if(接触暂停情况)break;
}
情况二,设置一些指示物,当这些指示物为真时,正常运行线程,其他情况下,跳过不运行即可
while (stopFlag) {
if (pauseFlag) {
线程本体
}
基于我对多线程的理解还不够深刻,所以姑且先写到这里,以后再来讨论更加深入的问题。