我最近做一个小的游戏 在做战斗模块的时候 有一些问题需要请教
需求:每一场战斗起一个线程,在战斗的过程中,我需要随时可以找到这个线程,因为在战斗过程中,有可能涉及到逃跑,发大招等操作.我是用一个servlet做的 1 首先我要初始化很多参数
private static Thread[] x = new Thread[100000];//线程的数组
private TimePrinter[] time = new TimePrinter[100000];//这个类实现了implements Runnable
private static Hashtable table = new Hashtable(); //每一个线程名 都有一个唯一的标志号
int[] j = new int[100000]; //线程的标志号 初始
//在init方法初始
for (int i = 0; i < 100000; i++) {
j[i] = 0;//等于0表示没有使用 等于1表示正在使用
}
每次战斗发生的时候 我都会建立一个线程名字(是唯一的 是两个人战斗的ID组成的) 这个时候我会从 标志号里找一个等于0,把这两个号放到Hashtable中.
中间还有一些简单的操作 就不说了
在我x[].start()的时候 经常出现错误
错误的提示是java.lang.IllegalThreadStateException这个错误 这个错误的解释就是对死亡的线程进行start()等操作
我就在线程start()前判断一下x[in].isAlive() 判断一下线程的状态 只有true的时候才start
但是还有问题
这是我第一次用线程的东西 不知道这么做对不对
如果不对,希望各位高手给一种好办法,我也不知道真正的游戏里的战斗是怎么做的 还有最后我说的那个问题java.lang.IllegalThreadStateException应该如果解决
先谢谢各位高手了
需求:每一场战斗起一个线程,在战斗的过程中,我需要随时可以找到这个线程,因为在战斗过程中,有可能涉及到逃跑,发大招等操作.我是用一个servlet做的 1 首先我要初始化很多参数
private static Thread[] x = new Thread[100000];//线程的数组
private TimePrinter[] time = new TimePrinter[100000];//这个类实现了implements Runnable
private static Hashtable table = new Hashtable(); //每一个线程名 都有一个唯一的标志号
int[] j = new int[100000]; //线程的标志号 初始
//在init方法初始
for (int i = 0; i < 100000; i++) {
j[i] = 0;//等于0表示没有使用 等于1表示正在使用
}
每次战斗发生的时候 我都会建立一个线程名字(是唯一的 是两个人战斗的ID组成的) 这个时候我会从 标志号里找一个等于0,把这两个号放到Hashtable中.
中间还有一些简单的操作 就不说了
在我x[].start()的时候 经常出现错误
错误的提示是java.lang.IllegalThreadStateException这个错误 这个错误的解释就是对死亡的线程进行start()等操作
我就在线程start()前判断一下x[in].isAlive() 判断一下线程的状态 只有true的时候才start
但是还有问题
这是我第一次用线程的东西 不知道这么做对不对
如果不对,希望各位高手给一种好办法,我也不知道真正的游戏里的战斗是怎么做的 还有最后我说的那个问题java.lang.IllegalThreadStateException应该如果解决
先谢谢各位高手了
我是用if(!x[in].isAlive()){
x[in].start();
}解决的 但是不行
java自己带了很多现成的线程工具类的.
在java.util.concurrent下面有很多,许多用现成的就可以....