Java 如何在Android中的onCreate()中启动多个线程,而不使用for循环启动线程(IllegalThreadStateException)?
我正在执行一个应用程序的负载测试,有5个线程。我希望所有线程都以随机模式运行,因此知道设备上的负载。假设运行所有线程的次数为5次,则所有线程应在没有IllegalThreadStateException的情况下成功运行5次。 我知道多次启动线程是不正确的。那么如何通过使用while和for循环来实现这一点呢? 我已经写了一个样本,但得到了例外Java 如何在Android中的onCreate()中启动多个线程,而不使用for循环启动线程(IllegalThreadStateException)?,java,android,multithreading,illegalstateexception,Java,Android,Multithreading,Illegalstateexception,我正在执行一个应用程序的负载测试,有5个线程。我希望所有线程都以随机模式运行,因此知道设备上的负载。假设运行所有线程的次数为5次,则所有线程应在没有IllegalThreadStateException的情况下成功运行5次。 我知道多次启动线程是不正确的。那么如何通过使用while和for循环来实现这一点呢? 我已经写了一个样本,但得到了例外 int count = 5; for(int i = 0; i < count; i++){ System.out.println("Loo
int count = 5;
for(int i = 0; i < count; i++){
System.out.println("Loop " + i);
try {
th.start();
th2.start();
smart.start();
fpthread.start();
idthread.start();
System.out.println("The count is " +count);
} catch (Exception e) {
e.printStackTrace();
}
}
int计数=5;
for(int i=0;i
编辑1:了解了ExecutorService框架和Threadpool的概念并进行了介绍。使用ExecutorService是否可以实现上述场景?类似..
1.正在创建ExecutorService实例,
2。正在修复线程池的数量,
3。正在创建列表对象,
4。使用迭代器检查下一个元素,
5。将线程添加到列表对象并最终通过ExecutorService对象执行
我的想法和过程正确吗
**如果问我的问题的方式或程序是错误的,请纠正我,而不是投反对票,因为我是一个新手。因为你已经意识到不能多次启动线程。因此,您需要创建一个新线程,而不是在每次迭代中都启动同一个线程
List<Thread> threads = new ArrayList<>();
for(int i = 0;i < 5;i++){
Thread thread = new Thread();
thread.start();
threads.add(thread);
}
List threads=new ArrayList();
对于(int i=0;i<5;i++){
线程=新线程();
thread.start();
线程。添加(线程);
}
据我所知,您希望再次重复该任务数次
现在还不清楚你到底想在这里做什么。您是否试图让5种类型的线程的5个实例同时运行,总共25个线程?不。如果我没有说清楚,我很抱歉。实际上,我正在开发一款有4个模块的设备,如打印机、指纹等。。所以在每个线程中,我有不同的方法和它们的逻辑。现在我想在oncreate()中启动all,以便所有测试都可以运行。这一次,它们运行得非常完美。现在我想运行它们5次。如果我把它放在一个循环中,那么我就得到了非法的ThreadStateException。因此,我们正在寻找解决方案。任何解决方案都会有帮助。在不了解更多您正在做的事情的情况下,我唯一能建议您也实例化循环中的线程。你只能启动一个给定的线程实例一次,所以如果你想运行一个给定类型的线程X次,那么你需要创建X个实例并启动每个实例。我读过关于多线程的书,我知道在MT中出现的异常。只是对启动所有线程并在shuffle中运行它们感到困惑。你说的“shuffle”是什么意思?是否要等到循环体中启动的五个线程全部完成后再启动下五个线程?