现在 run()位于类内,但它在 init()结束以后仍处在“睡眠”状态。若按下启动按钮,线程便会用多少有些
暧昧的表达方式创建(若线程尚不存在):
new Thread(Counter3.this);
若某样东西有一个 Runnable 接口,实际只是意味着它有一个 run()方法,但不存在与之相关的任何特殊东
西—— 它不具有任何天生的线程处理能力,这与那些从Thread 继承的类是不同的。所以为了从一个
Runnable 对象产生线程,必须单独创建一个线程,并为其传递Runnable 对象;可为其使用一个特殊的构建
器,并令其采用一个 Runnable 作为自己的参数使用。随后便可为那个线程调用 start(),如下所示:
selfThread.start();
它的作用是执行常规初始化操作,然后调用 run()。
Runnable 接口最大的一个优点是所有东西都从属于相同的类。若需访问什么东西,只需简单地访问它即可,
不需要涉及一个独立的对象。但为这种便利也是要付出代价的—— 只可为那个特定的对象运行单独一个线程
(尽管可创建那种类型的多个对象,或者在不同的类里创建其他对象)。
注意 Runnable 接口本身并不是造成这一限制的罪魁祸首。它是由于 Runnable 与我们的主类合并造成的,因
为每个应用只能主类的一个对象。
P.495
这一段话要多读读,读懂。
标签:Runnable,run,48,对象,创建,一个,线程,Java From: https://blog.51cto.com/u_16183536/8862393