Java Thread的run()上的public修饰符的好处

时间:2010-10-26 17:01:12

标签: java multithreading concurrency

有没有人对Java Thread类的run()方法公开的历史有任何见解?几乎所有时间都会被覆盖使用,因此受保护的修饰符会更合适吗?这仍然会将start()作为用户的公共API,因此不会给用户意外调用run()留下任何错误。

4 个答案:

答案 0 :(得分:10)

Thread实现了Runnable,它定义了run()方法,因此必须公开。

但是,由于建议使用Java 1.5而不是java.lang.Thread使用Executors services。执行程序将要执行的工作单元(RunnableCallable)与实际执行程序分离。 (使用Thread他们是同一件事)

答案 1 :(得分:3)

最好不要重写Thread,你应该创建一个Runnable并将其传递给新Thread的构造函数。这样,正在完成的工作Runnable与实现机制Thread。保持独立。

答案 2 :(得分:2)

runRunnable接口中定义,接口中定义的所有方法都是公共的。

答案 3 :(得分:1)

我认为这基本上是一个糟糕的设计,为了使用户“简单”,允许将任务运行(Runnable)到线程直接运行它。但是,由于JDK 1.0中添加了Thread,因此从那时起就无法更改该设计,只是弃用(有点)支持Executor框架。 JDK 1.0是很久以前的事了,从那以后,在没有经验的情况下犯了各种各样的错误。