gpt4 book ai didi

Java动态数字线程创建与管理

转载 作者:行者123 更新时间:2023-12-01 15:27:44 25 4
gpt4 key购买 nike

我想创建动态数量的线程,这取决于数据库数据库行数..

List list = session.createQuery("From Devices").list();

线程数量取决于list.size()。我正在使用 For 循环创建动态数量的线程

new Thread(){public void run(){/* Task of each thread */}.start();

创建动态数量的线程是否正确?如果我使用共享变量,我是否需要定义同步。任何其他想法如何管理线程,其中线程计数变得动态并取决于用户。

另一个问题,我如何定义一些私有(private)变量,该变量被分离到每个线程并且不相互剪切..????

谢谢

最佳答案

如果您只需要一组线程在每一行上执行某些操作,我会使用线程池:

ExecutorService exec = Executors.newFixedThreadPool(list.size());

与使用线程数组相比,提交工作和管理池要容易得多。

此后,同步取决于实际计算。如果您同时修改某些共享状态(列表、计数器),您将需要跨线程同步访问。

最后,定义一个具有私有(private)状态的线程任务:

class ThreadTask implements Runnable {

private int state; // example of private state

public ThreadTask(int state) {
this.state = state;
}

public void run() {
// task code
}
}

关于Java动态数字线程创建与管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9966570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com