Java 使用扩展线程执行线程
我可以让我的方法threadR通过一个可运行的线程运行,但是我似乎不能让threadL作为线程运行并打印到控制台Java 使用扩展线程执行线程,java,multithreading,Java,Multithreading,我可以让我的方法threadR通过一个可运行的线程运行,但是我似乎不能让threadL作为线程运行并打印到控制台 System.out.println(“来自Fred!threadL的问候”)从我的运行线程 我做错了什么 package threads; import java.util.ArrayList; import java.util.List; public class Threads extends Thread implements Runnable { private f
System.out.println(“来自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
}
包线程;
导入java.util.ArrayList;
导入java.util.List;
公共类线程扩展线程实现可运行{
private final List threadList=new ArrayList();
私有字符串e,l;
私人线程问候;
公共静态void main(字符串[]args){
String[]元素={“Tim”,“Fred”};
线程t=新线程();
对于(字符串e:元素){
t、 l(e);
t、 threadR(e);
}
对于(int index=0;index当您将字符串作为唯一参数传递给new Thread(String);
时,您实际上是在设置线程名称。您可能打算将Runnable传递给线程本身
Thread greetings1 = new Thread(this);
格式化后,查看代码更容易。如果您创建的线程太多,请说明您要实现的目标,可能还有更好的方法。@CtrlAltDel我只创建了两个额外的线程,一个名为Tim和Fred,在threadR方法下运行。然后,我尝试在threadL方法下执行相同的操作,因此还有两个线程除了主线程之外,我只是在做一些实验,以便更好地理解线程,以便在表模型上实现。@CtrlAltDel我试图让greetings1.start()启动,从而打印出System.out.println(“Fred!threadL的问候语”);是的,这正是我想要的——我没有发现这一点,也没有想到哪里出了问题