是否有任何线程管理器java

时间:2011-08-29 03:19:04

标签: java

我一直在java中创建一个threadmanager类,并且想要它,所以你可以输入一个类,它会在该类中运行threadrun方法但是当我编写我的代码时,我的ide会说:找不到符号threadrun

代码:

package thenetwork;

/**
 *
 * @author Jman
 */
public class Threadmanager implements Runnable
{
    Class clas;
    Object parameter1 = null;
    public Threadmanager(Class classobj)
    {
        clas = classobj;
    }
    public Threadmanager(Class classobj, Object param1)
    {
        clas = classobj;
        parameter1 = param1;
    }
    public void run() {
        if(parameter1 != null)
        {
            clas.threadrun(parameter1);
        }
        else
        {
            clas.threadrun();
        }
    }

}

如果不清楚,请注明,我将编辑我的帖子 编辑:我需要这个类能够运行多种类型的其他类

5 个答案:

答案 0 :(得分:2)

java.lang.Class没有名为threadrun的方法。

答案 1 :(得分:2)

我不明白你想要这个“线程管理器”类做什么,但是为了你的信息,这就是你用Java启动线程的方式:

Thread th = new Thread(runnable);
th.start();

这将创建并启动一个新线程,该线程将执行作为参数提供的Runnable的代码。

Runnable接口没有直接提供将参数传递给run()方法的方法,但是您可以通过实现其他方法,实现构造函数或编码{{}来实现相同的效果。 1}}从封闭范围中检索值的方法(如果它是作为内部类实现的......)


回答问题标题中表达的问题:是的,Java确实有标准的线程管理器,还有第三方库实现了这种事情。我建议您阅读@BalusC链接到的教程...并且不要尝试实现自己的线程管理器/线程池。

答案 2 :(得分:2)

您可以使用较低级别的构造,例如Thread,但我建议从ExecutorService开始。它以安全可靠的方式处理大多数常见的线程需求。

答案 3 :(得分:1)

Threadrun不是class的函数。

答案 4 :(得分:1)

你错过了对你的类参数的newInstance()调用。如果您尝试直接引用类对象,那么您将只能使用类型Class可用的方法,而不是对象所代表的类的类型。你的课应该看起来像(我遗漏了参数逻辑):

public class Threadmanager implements Runnable {
  MyThreadRunObject object;

  public Threadmanager(Class classobj) {
    object = (MyThreadRunObject) classobj.newInstance();
  }
  ...
  public void run() {  
    object.threadrun();
  }
}

此外,如果您使用的是Java 1.5+,我会对您的类参数进行泛化。关于泛化它的好处是你可以做一个有界泛型T extends ThreadRunnable并将你的threadrun方法放在一个接口中,允许你限制你的ThreadManager类作为类参数的类型。