我正在尝试实现这样一个简单的类:
public static void main(String args[])
{
try
{
myClass test = new Thread(new myClass(stuff));
test.start();
test.join();
}
catch (Throwable t) { }
}
Run Code Online (Sandbox Code Playgroud)
当我尝试在myClass中包含print()方法并使用它时,我在java.lang.Thread类中得到一个"找不到符号".我真的不需要把它作为一个线程,但我想,只是为了测试它.如果我想让print()方法起作用,我是否需要更改它?
编辑:对不起,我刚刚意识到我可以在run()函数lol中调用print().为什么我不能在外面打电话呢?这对我来说没有意义.如果我添加synchronized或者某些东西我可以调用run/class之外的函数吗?
编辑2:对不起,我在这里误写了这些名字.
编辑3:我目前正在这样做:
Thread test = new Thread(new myClass(stuff));
teste.start();
teste.join();
Run Code Online (Sandbox Code Playgroud)
如果我使用新的Runner,似乎我不能使用start()和join().有办法解决这个问题吗?
编辑4:好的,让我们再试一次:我有myEnvironment,这是一个类,我有myAgent,这是另一个类.myAgent是主题.myAgent需要myEnvironment,所以我将它作为参数传递给构造函数.但是,我不能通过扩展Thread来做到这一点,因为找不到构造函数(myEnvironment).我是否必须通过另一个函数设置myEnvironment,还是可以使用构造函数传递它?
Out*_*mer 15
您可以实现您想要的任何方法.但是,您需要确保引用使用您的类名,而不是Runnable:
public class MyRunner implements Runnable
{
@Override public void run();
public void somethingElse();
}
Runnable r = new MyRunner();
r.somethingElse(); // won't work, this method not defined by Runnable.
MyRunner m = new MyRunner();
m.somethingElse(); // success!
Run Code Online (Sandbox Code Playgroud)
Mr.*_* 安宇 10
您必须记住您在这里使用的不同类/接口:
如果变量的声明类型具有该方法,则只能调用变量上的方法.而Runnable对象不是Threads; 它们只是一个Thread可以运行的代码.
例:
class MyRunnable implements Runnable() {
public void run() { /* do run stuff */ }
public void print() { /* do print stuff */ }
}
class MyThread extends Thread() {
public void run() { /* do run stuff */ }
public void print() { /* do print stuff */ }
}
Thread t = new Thread(new MyRunnable());
t.start();
t.print(); // error, t is a Thread not a MyRunnable and not a MyThread
t.join();
MyRunnable mr = new MyRunnable();
mr.run(); // doesn't run in its own thread
mr.print(); // this is ok
Runnable r = new MyRunnable();
r.run(); // doesn't run in its own thread
r.print(); // error, r is defined as Runnable which has no print() method
MyThread mt = new MyThread();
mt.start();
mt.print(); // this is ok because mt is a MyThread
mt.join();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16603 次 |
| 最近记录: |