Java 关于线程的一般性讨论(混淆)
我只是想知道以下两种调用线程的方法之间的区别 请看这两个场景的两张图片 我的问题是,我所面临的行为是当我遵循“场景1”时,我失去了对我的程序和程序的控制 MyClass中的“//其他命令”未运行 当我遵循场景二时,我的顺序是平稳的。是否有人注意到这种行为或是故障 请给出你的意见Java 关于线程的一般性讨论(混淆),java,multithreading,Java,Multithreading,我只是想知道以下两种调用线程的方法之间的区别 请看这两个场景的两张图片 我的问题是,我所面临的行为是当我遵循“场景1”时,我失去了对我的程序和程序的控制 MyClass中的“//其他命令”未运行 当我遵循场景二时,我的顺序是平稳的。是否有人注意到这种行为或是故障 请给出你的意见 关于,我想不是实现线程(这不是前面提到的接口),而是要实现可运行 所以问题似乎是(这只是一个猜测,因为你的问题不存在):谁应该启动线程-MyClass或MyThread 基本上,我更喜欢场景1,因为MyThread实
关于,我想不是实现
线程
(这不是前面提到的接口),而是要实现可运行
所以问题似乎是(这只是一个猜测,因为你的问题不存在):谁应该启动线程-MyClass
或MyThread
基本上,我更喜欢场景1,因为MyThread
实际上只是一个可运行的任务,不应该额外处理线程本身
因此,MyClass
应该创建并启动线程。这还允许您保留对派生线程的引用,并可能在以后对其调用join()
或其他方法
作为旁注,我将
MyThread
改为:公共类MyRunnable实现Runnable{…}
您可能希望访问线程对象,例如,等待它完成或轮询它的状态。在场景2中,您可能不会执行此操作,因为无法从客户端代码访问变量t
。为了实现这一点,您必须使t
从外部代码可见,或者重写线程
方法(这将有点徒劳)。如果<代码>调用线程是某种方便方法,可以考虑返回<代码> t>代码> < /p>
如果场景2的意思是“MyThread
封装正在运行的线程并控制其状态”,则不必扩展thread
(读起来有点混乱)
如中所述,我将第二次实现
Runnable
,而不是为更干净的代码子类化Thread
。线程是一个类,而不是一个接口。所以你不能实现它。在这种情况下线程接口是什么?在标准Java中,线程是一个类,而不是一个接口。哦,对不起,伙计们,这是一个很大的错误,它不是实现线程,而是实现可运行。希望你能忽略这个错误,继续调用机制Yes thomas我想实现Runbable它不是线程那是一个打字错误我很抱歉。Chabicht我已经更改了图片这是一个打字错误它不是线程它是实现Runnable抱歉我在我的编辑后的问题。