嗨,我有一个代码检查代理。当我运行该方法时,我总是得到false。我明白这个问题是最后一个错误。当我用println在控制台上输出它时,它也在false和true之间存在差异,但没有将正确的值作为方法的返回值返回。你能帮忙吗!如果代理联机,代码必须输出true
final ExecutorService es = Executors.newFixedThreadPool(100);
public boolean isProxyOnline(String proxyIp, int proxyPort) {
es.submit(() -> {
try {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, proxyPort));
URLConnection connection = new URL("http://www.google.com").openConnection(proxy);
connection.setConnectTimeout(1000);
connection.connect();
System.out.println("true");
return true;
} catch (Exception e) {
System.out.println("false");
return false;
}
});
return false;
}
但是,第一种方式不需要以这种方式将任务提交给线程池:
public boolean isProxyOnline(String proxyIp, int proxyPort) throws ExecutionException, InterruptedException {
Future<Boolean> submit = es.submit(() -> {
try {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, proxyPort));
URLConnection connection = new URL("http://www.google.com").openConnection(proxy);
connection.setConnectTimeout(1000);
connection.connect();
System.out.println("true");
return true;
} catch (Exception e) {
System.out.println("false");
return false;
}
});
// block until the task you submitted to the thread pool completes execution and return a result(true or false).
return submit.get();
}
第二种方式是,通过这种方式,该方法将立即返回future
,并且您需要再次调用future#get
,这是block来获取结果。
public Future<Boolean> isProxyOnlineWithFuture(String proxyIp, int proxyPort) {
return es.submit(() -> {
try {
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyIp, proxyPort));
URLConnection connection = new URL("http://www.google.com").openConnection(proxy);
connection.setConnectTimeout(1000);
connection.connect();
System.out.println("true");
return true;
} catch (Exception e) {
System.out.println("false");
return false;
}
});
}
isProxyOnline
方法的返回值与提交给线程池的任务的返回值无关。当您向线程池提交任务时,您将获得反映任务执行结果的将来值。
问题内容: 好的,我在代码中实现了这个SO问题:随机返回True或False 但是,我的行为很奇怪:我需要同时运行十个实例,每个实例每次运行仅返回一次true或false。令人惊讶的是,无论我做什么,每次我得到 有什么方法可以改善这种方法,以便我至少有大约50%的机会得到吗? 为了使它更易于理解:我将应用程序构建为JAR文件,然后通过批处理命令运行 程序的内容-使其尽可能简单: 如果我打开10个命
问题内容: 我正在寻找最好的方法(快速而优雅)来获取python中的随机布尔值(翻转硬币)。 目前,我正在使用或。 有我不知道的更好的选择吗? 问题答案: 亚当的答案相当快,但是我发现答案要快得多。如果您真的想要布尔值而不是long值,那么 仍然是两倍的速度 两种解决方案都需要 如果最大的速度不是优先考虑的话,那么阅读肯定会更好 在看到@Pavel的答案后添加了此内容
我正在使用CodeIgniter 3和PostgreSQL 9.4数据库。如果数据库中相应列的数据类型是布尔值,有没有办法在PHP中获取布尔值? 我使用CodeIgniters查询生成器类,如下所示: 用户表中的所有布尔值都由字符串('t'和'f')表示。
问题内容: Go的布尔类型的零值为。Postgres支持未定义的BOOL类型,表示为NULL。尝试从Go中的Postgres获取BOOL值时,这会导致问题: 输出: 解决这个问题的最惯用的方法是什么?我想象的两种解决方案都不是很吸引人: 不要使用Go的类型。相反,我可能会使用一个字符串,并进行自己的转换,这占 在Postgres中,请始终通过使用或其他方式确保BOOL为TRUE或FALSE 。 问
问题内容: 我有一段代码应该在其中创建总机。我想返回所有打开的开关的列表。这里的“开”等于和“关”等于。因此,现在我只想返回所有值及其位置的列表。这就是我所拥有的,但它只返回第一次出现的位置(这只是我的代码的一部分): 这只会返回“ 4” 问题答案: 使用,返回找到的第一个匹配项的索引。 对于庞大的列表,最好使用:
问题内容: 以下代码不会输出任何内容: 但是下面的代码打印: 有没有更好的方式来打印或时是不是增加一个声明? 问题答案: 或者,如果您只想在为假时输出: