首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Runnable中具有线程类型的本地字段

Runnable中具有线程类型的本地字段
EN

Stack Overflow用户
提问于 2014-07-18 04:30:34
回答 2查看 711关注 0票数 3

Thread实现类中使用本地Runnable字段是否是一种糟糕的设计:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public class TestingThread implements Runnable {
        Thread t;   

        public TestingThread() {
            t = new Thread(this, "Testing thread");

        }
        public void start()
        {
            t.start();
        }
...
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-07-18 05:42:50

虽然这类问题显然是固执己见,但我会告诉你,为什么我认为这是一个设计缺陷。(事实上,我挑起了这个问题,所以也许我应该回答。)

Runnable是一个保存将(或应该)在线程中执行的代码的对象。文件对此作了如下解释:

Runnable接口应该由其实例要由线程执行的任何类实现。

Runnable接口的主要思想是将可执行代码与执行它的方法分开。在自己的线程中运行这样的代码有几种可能性。

其中一个可能性是Thread类。从其文件中:

有两种方法可以创建一个新的执行线程。一种是将类声明为线程的子类。此子类应重写类Thread的run方法。然后可以分配并启动子类的实例。..。另一种创建线程的方法是声明实现Runnable接口的类。然后,该类实现run方法。然后可以分配类的实例,在创建Thread时作为参数传递,然后启动。

在我看来,你总是应该做后一件事。定义Runnable接口的实现,将它们的实例传递给Thread的构造函数,然后启动线程。示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyRunnable implements Runnable { ... }

void runMyCodeInOwnThread() {
    Runnable runnable = new MyRunnable();
    Thread thread = new Thread(runnable);
    thread.start();
}

在线程中执行Runnable的另一种方法是Executor,尽管您很可能使用ExecutorService (实际上是Executor的一个子类型)。实用工具类Executors很可能用于检索executor服务。示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class MyRunnable implements Runnable { ... }

void runMyCodeInOwnThread() {
    Runnable runnable = new MyRunnable();
    ExecutorService executor = Executors.newSingleThreadExecutor();
    Future<?> future = executor.submit(runnable); // or simply "executor.execut(runnable);"
}

如果您没有将您的可运行性与如何执行它的方法联系在一起,那么您可以自由地使用任何一种机制,或者在将来需求提前时更改它。

然而,当我浏览这些类的文档时,我在示例中也看到了同样的机制。不过,我认为这不是一个好的设计。

票数 2
EN

Stack Overflow用户

发布于 2014-07-18 04:43:52

在另一个线程类中保留或使用本地线程变量是choice.But个人的事情,据我所知,这不是一个好的设计,除非您有这样做的特定要求,并且在您的线程class.You中使用这个本地线程变量几乎不需要在现实生活中的scenario.Hope中使用这种需求--这对您有帮助!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24825100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文