栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java为什么不在构造函数中启动线程?如何终止?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java为什么不在构造函数中启动线程?如何终止?

你的第一个问题:在构造函数中启动一个线程,并传递

this
escapes
this
。这意味着你实际上是在完全构造对象之前给出对对象的引用。该线程将在构造函数完成之前启动。这会导致各种奇怪的行为。

关于第二个问题:在Java中没有强制其他线程停止的方法,因此你将使用一个变量,线程将检查该变量以知道是否应该停止。另一个线程将其设置为指示第一个线程将停止。该变量必须是易失性的,或者所有访问都必须同步,以确保正确发布。这是一些你想要的代码。

public class MyNewThread implements Runnable {    private final Thread t;    private volatile boolean shouldStop = false;    MyNewThread() {        t = new Thread (this, "Data Thread");    }    public void start() {        t.start();    }    public void stop() { shouldStop = true;    }    public void run()  {         while(!shouldStop)         {  // do stuff         }    }}

任何想要创建和启动线程的方法都会:

MyNewThread thread = new MyNewThread();thread.start();

想要停止线程的任何事情都会做:

thread.stop();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/451900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号