如何多次命名线程并在 Java 中使用它
How to name a Thread multiple times and use it in Java
我有一个 class,其中有一个 运行nable 线程。我不止一次同时向这个 class 发送一个变量。 class 有 运行() 方法并为从另一个 class 发送的变量启动自己的线程。
在一些过程之后,我需要用中断来停止线程,但我必须指定要停止的线程的名称(例如 MyThread.interrupt() )。问题是,我每次都在 class 中创建具有相同对象名称的线程。所以我每次都必须以不同的方式命名这个线程对象,并通过它的名字来停止它。但我不知道如何..这是我的代码;
public class KasaThread {
public static Thread till ;
public static String [] table_list_kasa;
public static void get (final String IP,final String MagID){
till = new Thread () {
public void run () {
if(IP != null){
try{
...
...
...
}catch(Exception e} {}
在另一个 class 中,我用它的名字打断了这个线程,例如 (till.interrupt() )..
但正如我所说,在此 class 中创建的每个线程都具有相同的名称 (till)。
如何解决这个问题?
提前致谢。
我想你可以用 methods setName(String name)
和 getName()
+ 一些计数器来解决这个问题。
您可以将线程放在 ArrayList
或 LinkedList
中。如果您真的希望能够通过名称访问它们,您可以为此使用 Map<String, Thread>
。
你想同时停止所有线程吗?如果是这样,您可以为此向 class 添加一个 stop()
方法。它可能看起来像这样:
public void stop() {
for (Thread thread : threads) {
thread.interrupt()
}
}
一个解决方案是在另一个 class 中保存一个 HashMap(或您喜欢的线程的任何其他 Id),并使这个实现 Runnable,这样您就可以在另一个中控制您的线程class.
我有一个 class,其中有一个 运行nable 线程。我不止一次同时向这个 class 发送一个变量。 class 有 运行() 方法并为从另一个 class 发送的变量启动自己的线程。 在一些过程之后,我需要用中断来停止线程,但我必须指定要停止的线程的名称(例如 MyThread.interrupt() )。问题是,我每次都在 class 中创建具有相同对象名称的线程。所以我每次都必须以不同的方式命名这个线程对象,并通过它的名字来停止它。但我不知道如何..这是我的代码;
public class KasaThread {
public static Thread till ;
public static String [] table_list_kasa;
public static void get (final String IP,final String MagID){
till = new Thread () {
public void run () {
if(IP != null){
try{
...
...
...
}catch(Exception e} {}
在另一个 class 中,我用它的名字打断了这个线程,例如 (till.interrupt() ).. 但正如我所说,在此 class 中创建的每个线程都具有相同的名称 (till)。
如何解决这个问题?
提前致谢。
我想你可以用 methods setName(String name)
和 getName()
+ 一些计数器来解决这个问题。
您可以将线程放在 ArrayList
或 LinkedList
中。如果您真的希望能够通过名称访问它们,您可以为此使用 Map<String, Thread>
。
你想同时停止所有线程吗?如果是这样,您可以为此向 class 添加一个 stop()
方法。它可能看起来像这样:
public void stop() {
for (Thread thread : threads) {
thread.interrupt()
}
}
一个解决方案是在另一个 class 中保存一个 HashMap(或您喜欢的线程的任何其他 Id),并使这个实现 Runnable,这样您就可以在另一个中控制您的线程class.