【发布时间】:2013-12-29 07:01:51
【问题描述】:
我正在创建一个框架,它运行线程并调用其他处理程序的回调..我想知道这种结构是否有意义,如果不是什么缺点以及如何改进它..
class abstract Main {
public abstract void handle();
}
Class Sub {
Main m = null;
public Sub (Main m)
{
this.m = m;
}
public callBack() { m.handle(); }
}
class A extends Main implements Runnable
{
public Sub obj = null;
public A () {}
public void setB(Sub b) { obj = b;}
public run()
{
/*do some process than call the callback of Sub */
b.callback();
}
public handle() { /* main handle */}
}
public static void main(String[] args) {
A aobj = new A();
Sub newb = new Sub(aobj);
aboj.setB(newb);
aboj.run();
}
【问题讨论】:
-
这里有单线程应用程序。您不会通过调用
run()方法来启动新线程。请参阅docs.oracle.com/javase/tutorial/essential/concurrency/… 了解更多信息。您尝试创建的内容可能已经完成 - 请参阅“执行者”段落。不要重新发明轮子。 -
runnable 的 run 方法不应该直接调用,而是使用 Thread 或运行 runnable 的东西。考虑到这一点,这段代码对我来说似乎不是最先进的。
-
所以如果我想在线程调用处理程序回调的地方创建多线程,我需要做哪些更改?
-
除了一些小的语法缺陷(“class abstract”而不是“abstract class”,缺少“void”),大小写问题(“Class”而不是“class”,“callback”而不是“callBack”)和拼写错误(“aboj”而不是“aobj”),您的代码将按预期方式编译和工作。但是,仅调用 Runnable.run() 不会创建线程,因此您的所有代码都将在单个线程中运行。
-
抱歉错字.. 它只是一个模型来解释我的框架。如果我想创建线程,我所做的 A 类已经扩展 Main
标签: java performance architecture frameworks