使用extend Thread进行线程化

时间:2015-12-30 21:52:08

标签: java multithreading

我可以让我的方法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 
    }

1 个答案:

答案 0 :(得分:2)

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

Thread greetings1 = new Thread(this);

Thread Constructors