gpt4 book ai didi

java - 需要帮助创建带参数的线程

转载 作者:行者123 更新时间:2023-12-01 14:38:30 27 4
gpt4 key购买 nike

我有以下情况,当我有大量数据时,需要一些时间(提交)因此我认为也许要创建负责持久化线程的方法因为我对线程内容不熟悉1.createClassInstance之类的参数应该如何传递到线程。 ?2.如何将main内的调用改为theard?

谢谢

ma​​in内之前的代码

public static void main(String[] args) throws Exception {

// Get class members
ClassHandle classMetaData = new ClassHandle();
createClassInstance = classMetaData.createClsObj(listClsObj);

// Persist data using JPA
PersistClassObject.persistObjects(createClassInstance,
persistenceUnitName);

...

现在我实现了可运行,但参数中有错误,我现在应该做什么

public class TheredTest implements Runnable {

@Override
public void run() {


// Persist data using JPA
PersistClassObject.persistObjects(createClassInstance,
persistenceUnitName);



}

}

解决方案后的代码

        ClassHandle classMetaData = new ClassHandle();
createClassInstance = classMetaData.createClsObj(listClsObj);

PersistRunnable persistRunnable = new PersistRunnable(createClassInstance, persistenceUnitName);

Thread thread = new Thread(persistRunnable);
thread.start();




------


@Override
public void run() {
// your persistence code referring to those arguments

// Persist data using JPA
PersistClassObject.persistObjects(theObjectsToPersist,
persistenceUnitName);
}

最佳答案

由于 PersistClassObject.persistObjects 是静态,因此没有好的方法可以使其成为Runnable 并传入任何参数。 Runnable(和Callable)的一个缺点是它们不接受参数。您每次都需要创建一些实例。例如非常粗略的东西,比如:

class PersistRunnable implements Runnable {
final List theObjectsToPersist;
final String persistenceUnitName;

public PersistRunnable (List objectsToPersist, String persistenceUnitName) {
this.theObjectsToPersist = objectsToPersist;
this.persistenceUnitName = persistenceUnitName;
}

@Override
public void run() {
// your persistence code referring to those arguments
}
}

这个新类是否取代您的 PersistClassObject 还是补充它取决于您在其他地方使用 PersistClassObject。

关于java - 需要帮助创建带参数的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16240351/

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