Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何区分两个线程_Java_Multithreading - Fatal编程技术网

Java 如何区分两个线程

Java 如何区分两个线程,java,multithreading,Java,Multithreading,我的程序中有以下代码: Thread getUsersist, getChatUsers; getUsersList = new Thread(this, "getOnlineUsers"); getUsersList.start(); getChatUsers = new Thread(this, "getChatUsers"); getChatUsers.start(); 在run中,我想知道哪个线程正在使用run。如果是getOnlineUsers,我会做一些事情,如果是getChat

我的程序中有以下代码:

Thread getUsersist, getChatUsers;

getUsersList = new Thread(this, "getOnlineUsers");
getUsersList.start();
getChatUsers = new Thread(this, "getChatUsers");
getChatUsers.start();
在run中,我想知道哪个线程正在使用run。如果是getOnlineUsers,我会做一些事情,如果是getChatUsers,我会做其他事情。那么我如何知道哪个线程正在使用run呢?

在run中,您可以执行以下操作:

Thread.currentThread().getName()
获取getOnlineUsers或getChatUsers并相应地采用不同的代码路径。这就是说,对我来说,这似乎是一个相当脆弱的设计,我想如果每个线程都有单独的类,情况会好得多

if (getName().equals("getOnlineUsers")) {
    doOneThing();
else if (getName().equals("getChatUsers")) {
    doAnotherThing();
} else {
    throw Up();
}

编辑:忽略此答案。阅读已接受的答案。

使用run是什么意思?你是说,哪个线程当前正在运行?是的。当我说*.start时,它叫run,不是吗。所以在运行中,我想知道哪个线程调用了它。您不需要thread.currentThread。run是Thread类后代的一个方法。+1表示这种方法是粗略的,应该考虑更好的替代方法。@Marcelo:但Runnable的run方法不是。+1:每个线程有单独的类:或者至少是Runnable上的一个属性。是的,我正在实现Runnable。这个方法很有效,不像Marcelo的,虽然我不明白为什么。但是他的代码示例中的这个是可运行的,而不是线程。getName不可用。我尝试了这个,但只是简单地执行System.out.printlngetName会给我一些其他线程名称,而不是我需要的GetOnlineUsers、getChatUSers。