完成后如何停止执行流程

时间:2013-06-15 12:23:42

标签: java cassandra

我在eclipse中有一个代码,我已经成功建立了cassandra连接。连接成功完成,但我看到eclipse中的大红色按钮已经开始了,但是过程尚未完成。我想关闭红色按钮作为正常代码的执行 确实。这是我的代码......

import com.datastax.driver.core.Cluster;
import com.datastax.driver.core.Host;
import com.datastax.driver.core.Metadata;

public class MyConnection{

private Cluster cluster;

public void connect(String node) {
    cluster = Cluster.builder().addContactPoint(node).build();
    Metadata metadata = cluster.getMetadata();
    System.out.println("Cassandra connection established");
    System.out.printf("Connected to cluster: %s\n",
            metadata.getClusterName());
    for (Host host : metadata.getAllHosts()) {
        System.out.printf("Datatacenter: %s; Host: %s; Rack: %s \n",
                host.getDatacenter(), host.getAddress(), host.getRack());

    }
}

public void close() {
    cluster.shutdown();
}

public static void main(String[] args) {
    MyConnection c = new MyConnection();
    c.connect("127.0.0.1");
    c.close();

}

}

这是代码。有人请帮忙..

2 个答案:

答案 0 :(得分:0)

不太确定eclips正在做什么,但在intelliJ中运行相同的代码(slightly modified),并且该过程在它自己完成,这是输出:

log4j:WARN No appenders could be found for logger (com.datastax.driver.core.ControlConnection).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Cassandra connection established
Connected to cluster: Test Cluster
Datatacenter: datacenter1; Host: /127.0.0.1; Rack: rack1 

Process finished with exit code 0

然后我尝试了以下内容:

  • 关闭cassandra服务器运行相同的代码
  • 在远程服务器上运行相同的代码
  • 在我没有连接的远程服务器上运行相同的代码(超时)

所有三个案例都导致错误,但代码仍然自行退出。

cluster.shutdown();是正确的,以清除com.datastax.driver.core.Cluster对象使用的连接。使用System.exit(0)会杀死进程,但它被认为是不好的做法。此代码自行执行和完成。我的建议是,检查运行(执行)设置,查看可能与您的应用程序交互/干扰的任何内容。

答案 1 :(得分:-1)

尝试:

System.exit(0);

这将关闭红色按钮: - )