【发布时间】:2011-12-08 20:02:43
【问题描述】:
我有一个按钮“addCashier”,它正在创建一个名为“Cashier”的线程,现在这个线程只是简单地每 4 秒生成一次订单,线程的 run() 方法中有一个 while(true) 循环。那里一切都很好,但现在我想添加一个按钮来模拟收银员注销。我在我的 while 循环 onDuty 和一个公共函数 logOff() 中添加了一个布尔变量,它将这个 onDuty bool 设置为 false 以使我退出运行的 while 循环。我现在的问题来自我的 gui 类,如何在特定线程上调用函数?每个收银员线程都是在运行时生成的,所以我不知道他们的名字。
我希望我说得通。提前致谢。
【问题讨论】:
-
这取决于您创建线程的方式。可以通过数组引用吗?
-
hmmm 我不知道你可以将线程对象存储在一个数组中,我来看看这种方法。
-
@mikeyP - 你也可以将它们保存在
HashMap<String, Thread>;你提到他们有一些“名字”,这将是 (String) 键。 -
@BrianRoach 好的,这是有道理的,我喜欢 Hash 实现,但是在这段代码中,线程引用会是 myThread:
Thread myThread; Cahier (String name) { myThread = new Thread( this ); myThread.start(); } -
@mikeyP,没错-
myThread是您的参考-但您还需要通过在每个线程的Thread参考上调用setName(String name)方法来明确设置Thread的名称你创造。然后将两者(名称和引用)添加到 HashMap 中。使用Name作为句柄,以便稍后让您的线程停止特定线程。
标签: java multithreading