【问题标题】:threading using extend Thread使用扩展线程进行线程化
【发布时间】:2015-12-30 21:52:07
【问题描述】:

我可以让我的方法 threadR 由可运行线程运行,但是我似乎无法让 threadL 作为线程运行并打印到控制台

System.out.println("Greetings from Fred! threadL"); 来自我的运行线程

我做错了什么?

package threads;

import java.util.ArrayList;
import java.util.List;

public class Threads extends Thread implements Runnable  {

private final List<Thread> threadList = new ArrayList<>();
private String e,l;
private Thread greetings;


public static void main(String[] args) {

String[] elements = {"Tim","Fred"};    
Threads t = new Threads();
for (String e: elements) {  
t.threadL(e);
t.threadR(e);
}



for(int index = 0;index<t.threadList.size();index++){
System.out.print(t.threadList.get(index).getName()+ " ID "+          t.threadList.get(index).getId()+"\n");

}
}



public List<Thread> threadL(String l)  {
Thread greetings1 = new Thread(l);

greetings1.start();
threadList.add(greetings1);
//System.out.print(greetings.getName()+"\n");
//System.out.print(greetings.getId()+"\n");
   return(threadList);

}
public List<Thread> threadR(String f)    {
greetings = new Thread(f);
Thread greetingsFromFred = new Thread(greetings) { 
 @Override
 public void run() { 
     System.out.println("Greetings from Fred! threadR");

}
}; greetingsFromFred.start();

threadList.add(greetings);
//System.out.print(greetings.getName()+"\n");
//System.out.print(greetings.getId()+"\n");
   return(threadList);
 }

    public void run() {
         System.out.println("Greetings from Fred! threadL");  //this is what wont run 
    }

【问题讨论】:

  • 格式化后查看代码更容易
  • 你创建了太多线程...解释你想要实现的目标,可能有更好的方法来做到这一点。
  • @ CtrlAltDel 我只创建了 2 个额外的线程,一个名为 Tim 和 Fred,在 threadR 方法下运行。然后我试图在方法threadL下做同样的事情,所以还有2个线程。除了主线。我只是在做一些实验来更好地理解线程,以便在表模型上实现。
  • @ CtrlAltDel 我正在尝试让 greetings1.start() 启动,因此打印出 System.out.println("Greetings from Fred!threadL");

标签: java multithreading


【解决方案1】:

当您将字符串作为唯一参数传递给new Thread(String); 时,您实际上是在设置线程名称。您可能打算将 Runnable 这样传递给线程

Thread greetings1 = new Thread(this);

Thread Constructors

【讨论】:

  • 是的,这正是我想要的——我没有发现,也想不出哪里出了问题
猜你喜欢
  • 2014-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 2010-12-09
相关资源
最近更新 更多