繁体   English   中英

如何在此代码中获取Java线程的名称?

[英]How do I get the name of my java threads in this code?

我尝试在运行方法中使用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  
  }

 }

如下使用,返回当前线程的名称

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) { }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM