Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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多线程程序中的Elasticsearch Java API_Java_Multithreading_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,Multithreading,elasticsearch" /> elasticsearch,Java,Multithreading,elasticsearch" />

Java多线程程序中的Elasticsearch Java API

Java多线程程序中的Elasticsearch Java API,java,multithreading,elasticsearch,Java,Multithreading,elasticsearch,我在实现多线程的程序中使用ElasticSearchJavaAPI。我用记录创建了我所有的索引和必要的数据库(CouchDB) GetResponse getResponse = elasticClient .prepareGet("elastestdb", "elastestdb", "id1" ).execute() .actionGet(); Map<String, Object> source = getResponse.ge

我在实现多线程的程序中使用ElasticSearchJavaAPI。我用记录创建了我所有的索引和必要的数据库(CouchDB)

GetResponse getResponse = elasticClient
            .prepareGet("elastestdb", "elastestdb", "id1" ).execute()
            .actionGet();

Map<String, Object> source = getResponse.getSource();
System.out.println(source);
GetResponse GetResponse=elasticClient
.prepareGet(“elastestdb”、“elastestdb”、“id1”).execute()
.actionGet();
Map source=getResponse.getSource();
系统输出打印项次(来源);
当我直接从函数或使用in函数调用它时,上面的代码可以工作。然而,若我将Java Multi-threading run()方法放入其中,那个么尽管线程正在运行,但它不会执行

public synchronized void run() {
    // System.out.println("Worker Thread started");

    while (!stopping) { //not stopped 

        if (!running) { //not running
            try {
                this.wait(); // wait until notify()

            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                System.out.println("[Thread " + workerID + "] interrupted");
            }
        }
        else {  // Actual code start here
            if (!stopping) 
            {
                    System.out.println("Im running workerID " + workerID);

                    GetResponse getResponse = elasticClient
                         .prepareGet("elastestdb", "elastestdb", "id1" ).execute()
                         .actionGet();

                    Map<String, Object> source = getResponse.getSource();
                    System.out.println(source);

            } else {
                   //Do nothing  }

            }
         }
      }
public synchronized void run(){
//System.out.println(“工作线程已启动”);
当(!停止){//未停止时
如果(!正在运行){//未运行
试一试{
this.wait();//等待到notify()为止
}捕捉(中断异常e){
//TODO自动生成的捕捉块
System.out.println(“[Thread”+workerID+“]中断”);
}
}
否则{//实际代码从这里开始
如果(!停止)
{
System.out.println(“Im正在运行workerID”+workerID);
GetResponse GetResponse=elasticClient
.prepareGet(“elastestdb”、“elastestdb”、“id1”).execute()
.actionGet();
Map source=getResponse.getSource();
系统输出打印项次(来源);
}否则{
//什么也不做}
}
}
}

我通过将GetResponse GetResponse作为我启动线程的引用来解决这个问题

在我的主课上

 ThreadManager manager;
 GetResponse getResponse;

 manager.assingThread(getResponse);
在我的线程类

  GetResponse getResponse;

  public synchronized void setRunning(GetResponse response) {
       this.getResponse = response;
  }

  public synchronized void run() {

       getResponse = elasticClient
            .prepareGet("elastestdb", "elastestdb", "id1" ).execute()
            .actionGet();

       System.out.println(source);
  }

记录到控制台的输出是什么?你的跑步记录有没有被记录下来?@BirgitMartinelle,有。我一直得到“Im running workerID”+workerID,但它没有执行下面的GetReponse函数,而且run()方法是一个continuos循环(我一直得到Im running workerID…)