Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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,我尝试在run方法中使用getName()和Thread.getName(),但它们不起作用。有什么建议吗 我需要获取线程所属的变量名。 我是一个初学者程序员,所以任何指导都是感激的。如果有必要,我会解释得更多 这就是我要说的,我只是添加了更多的词来摆脱恼人的“大部分是代码”限制 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class ThreadEx extends JFrame { JB

我尝试在run方法中使用getName()和Thread.getName(),但它们不起作用。有什么建议吗

我需要获取线程所属的变量名。 我是一个初学者程序员,所以任何指导都是感激的。如果有必要,我会解释得更多

这就是我要说的,我只是添加了更多的词来摆脱恼人的“大部分是代码”限制

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ThreadEx extends JFrame
{

JButton btnStart = new JButton("A button");

public ThreadEx()
{      
  this.setTitle("Threads");
  this.setSize(300, 200);
  this.setLayout(new GridLayout(0, 1));

  this.setLocationRelativeTo(null);
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  this.setVisible(true);

  JProgressBar progressBar1 = new JProgressBar();
  JProgressBar progressBar2 = new JProgressBar();

  JLabel label1 = new JLabel("Progress 1: ");
  JLabel label2 = new JLabel("Progress 2: ");

  InnerProgress innerProgress1 = new InnerProgress(label1, progressBar1);
  InnerProgress innerProgress2 = new InnerProgress(label2, progressBar2);

  Thread t1 = new Thread(innerProgress1);
  Thread t2 = new Thread(innerProgress2);

  t1.start();
  t2.start();

  btnStart.addActionListener(clickListener);

  this.add(btnStart);
  this.add(innerProgress1);
  this.add(innerProgress2);

  this.pack();

 }

public class InnerProgress extends JPanel implements Runnable
{
  JLabel label;
  JProgressBar progress;

  InnerProgress(JLabel _label, JProgressBar _progress)
  {
     label = _label;
     progress = _progress;
     this.add(label);
     this.add(progress);  
  }

  public void run()
  {  
     System.out.println("Running: "); //<===== This is where I want to add thread name  
  }

 }
import java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类ThreadEx扩展了JFrame
{
JButton btnStart=新的JButton(“按钮”);
公共ThreadEx()
{      
本文件的标题为“线程”;
这个.设置大小(300200);
这个.setLayout(新的GridLayout(0,1));
此.setLocationRelativeTo(空);
此.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
此.setVisible(true);
JProgressBar progressBar1=新的JProgressBar();
JProgressBar progressBar2=新的JProgressBar();
JLabel label1=新的JLabel(“进度1”);
JLabel label2=新的JLabel(“进度2”);
innerProgress1=新的innerProgress1(label1,progressBar1);
innerProgress2=新的innerProgress2(label2,progressBar2);
螺纹t1=新螺纹(1);
螺纹t2=新螺纹(2);
t1.start();
t2.start();
btnStart.addActionListener(单击Listener);
添加(btnStart);
添加(1);
添加(2);
这个包();
}
公共类InnerProgress扩展JPanel实现Runnable
{
JLabel标签;
JProgressBar进程;
InnerProgress(JLabel\u标签,JProgressBar\u进度)
{
标签=_标签;
进度=_进度;
添加(标签);
添加(进度);
}
公开募捐
{  

System.out.println(“Running:”;//在获取其名称之前,您可以设置其名称


请参见下面的用法,返回当前线程的名称

System.out.println("Running: " + Thread.currentThread().getName());
Thread.currentThread()
提供执行线程的当前引用

for(int i=0; i<100; i++){
    progress.setValue(i);
    progress.setString(Thread.currentThread().getName()+" - "+i+"%");
    try {
        Thread.sleep(500);
    } catch (InterruptedException ignore) { }
}

for(int i=0;iGet当前
线程
并使用
getName()
打印其名称。