Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用扩展线程执行线程_Java_Multithreading - Fatal编程技术网

Java 使用扩展线程执行线程

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

我可以让我的方法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 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的问候语”);是的,这正是我想要的——我没有发现这一点,也没有想到哪里出了问题