在多个线程

时间:2017-02-27 13:20:54

标签: java multithreading classloader swingworker

在我的应用程序中,我使用ClassLoader加载课程,并且它正常工作。并且根据要求我必须加载类并同时在多个线程中执行该类,所以我使用了SwingWorker但是在实现它之后它不起作用,不能执行类的方法(可能无法加载课程。) SwingWorker的实现:

public class BackgroundWorker extends SwingWorker<Void, Integer> 
{
int threadCount = 0;
private int max = 1000;
ConfigurationExecution _configExec;
boolean _value;
String _assemblyName;

public BackgroundWorker(ConfigurationExecution configExec, boolean value, String AssemblyName) 
{
    _configExec = configExec;
    _value = value;
    _assemblyName = AssemblyName;
}
// End
@Override
protected Void doInBackground() throws Exception 
{
    ExecuteSelenium selemHelper = new ExecuteSelenium();
    selemHelper.runTest(_configExec, _value, _assemblyName);
    return null;
}

@Override
protected void process(List<Integer> chunks) 
{
    int i = chunks.get(chunks.size()-1);
    System.out.println(i);
}

@Override
protected void done() 
{
    try 
    {
        get();
        ClientReflection.threadCount--;
    } 
    catch (ExecutionException | InterruptedException e) 
    {
        e.printStackTrace();
    }
}

使用上述课程:

BackgroundWorker[] threadArray = null;
public void RunTest()
{
    int maxThreads = configExec.size();
    threadArray = new BackgroundWorker[maxThreads];
    for (int i = 0; i < configExec.size(); i++)
    {
        threadArray[i] = new BackgroundWorker(configExec.get(i),isFileOut,assemblyName);
                threadArray[i].execute();
    }
}

使用doInBackground的{​​{1}}方法调用以下方法:

SwingWorker

因为我没有收到任何错误但也没有得到结果 是否我们无法同时从2个不同的线程在ClassLoader中加载相同的jar?
如果有人经历或解决了这种情况,那么请帮助。

编辑: 如果只调用了一个线程,那么它可以工作,但不能用于多线程。

0 个答案:

没有答案