有没有人对Java Thread类的run()方法公开的历史有任何见解?几乎所有时间都会被覆盖使用,因此受保护的修饰符会更合适吗?这仍然会将start()作为用户的公共API,因此不会给用户意外调用run()留下任何错误。
答案 0 :(得分:10)
Thread
实现了Runnable
,它定义了run()
方法,因此必须公开。
但是,由于建议使用Java 1.5而不是java.lang.Thread
使用Executors services。执行程序将要执行的工作单元(Runnable
,Callable
)与实际执行程序分离。 (使用Thread
他们是同一件事)
答案 1 :(得分:3)
最好不要重写Thread,你应该创建一个Runnable并将其传递给新Thread的构造函数。这样,正在完成的工作Runnable与实现机制Thread。保持独立。
答案 2 :(得分:2)
run
在Runnable
接口中定义,接口中定义的所有方法都是公共的。
答案 3 :(得分:1)
我认为这基本上是一个糟糕的设计,为了使用户“简单”,允许将任务运行(Runnable
)到线程直接运行它。但是,由于JDK 1.0中添加了Thread
,因此从那时起就无法更改该设计,只是弃用(有点)支持Executor
框架。 JDK 1.0是很久以前的事了,从那以后,在没有经验的情况下犯了各种各样的错误。