初识线程的问题

pc0de 2011-04-06 11:27:17
各位兄弟姐妹,大家好! 今天刚刚接触java的线程,有一些小小的疑问,望大家解答。
我知道在建立Thread对象的时候,可以用Runnable接口的对象作为Thread构造函数的参数
比如可用Runnable job = new MyRun(); Thread mythread = new Thread(job);
这里的自定义的MyRun类能不能是主线程中的内部类呢?
我根据head first java 里的一段代码 ,测试了下

public class ThreadTestDrive {
public static void main(String[] args) {

Runnable threadJob = new MyRunnable();
Thread myThread = new Thread(threadJob);
myThread.start();

System.out.println("back in main ");
}

public class MyRunnable implements Runnable {
public void run(){
go();
}

public void go (){
doMore();
}

public void doMore() {
System.out.println("top's the stack ");
}

}
}


编译提示如下$ javac ThreadTestDrive.java
ThreadTestDrive.java:4: non-static variable this cannot be referenced from a static context
Runnable threadJob = new MyRunnable();
才想起main是static类型的方法,不能引用非static的方法。。
请问下大家,我有没有办法把这个MyRunnable 写成内部类,又顺利运行呢?
谢谢
...全文
74 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pc0de 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 soli11722984 的回复:]

ThreadTestDrive ttd = new ThreadTestDrive ();
Runnable threadJob = ttd.new MyRunnable();

这个是new内部类问题
[/Quote]
这个方法也可行 谢谢啊
远岫浮岚 2011-04-06
  • 打赏
  • 举报
回复
没想过这个问题???
pc0de 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 goldenfish1919 的回复:]

public static class MyRunnable implements Runnable
[/Quote]
这样还真行。。 谢谢
soli11722984 2011-04-06
  • 打赏
  • 举报
回复
ThreadTestDrive ttd = new ThreadTestDrive ();
Runnable threadJob = ttd.new MyRunnable();

这个是new内部类问题
若鱼1919 2011-04-06
  • 打赏
  • 举报
回复
public static class MyRunnable implements Runnable

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧