【发布时间】: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