我最近在想,为什么两者都做java.lang.Runtime,并java.lang.System有库加载,垃圾收集和类似的操作同样的方法.是因为历史原因,为了方便,还是真的不同?这两个类都可以从JDK 1.0获得......
如果我有一个ExecutorService向其提供Runnable任务的东西,我可以选择一个并中断它吗?
我知道我可以取消Future返回(也提到这里:how-to-interrupt-executors-thread),但我怎么能提出一个InterruptedException.取消似乎没有这样做(事件虽然它应该通过查看源,可能OSX实现不同).至少这个片段不打印'它!' 也许我误解了一些东西而不是自定义runnable获得异常?
public class ITTest {
static class Sth {
public void useless() throws InterruptedException {
Thread.sleep(3000);
}
}
static class Runner implements Runnable {
Sth f;
public Runner(Sth f) {
super();
this.f = f;
}
@Override
public void run() {
try {
f.useless();
} catch (InterruptedException e) {
System.out.println("it!");
}
}
}
public static void main(String[] args) throws InterruptedException, ExecutionException {
ExecutorService es = Executors.newCachedThreadPool();
Sth f = new Sth();
Future<?> lo …Run Code Online (Sandbox Code Playgroud) 据我所知,StringBuilder通过在concats期间不在字符串池中创建临时字符串实例来帮助减少内存使用量.但是,如果我这样做会发生什么:
StringBuilder sb = new StringBuilder("bu");
sb.append("b"+"u");
Run Code Online (Sandbox Code Playgroud)
它编译成了吗?
sb.append("b");
sb.append("u");
Run Code Online (Sandbox Code Playgroud)
?或者它取决于优化标志?或者,如果使用stringbuilders,我会失去整个好处?或者这个排队没有意义?:)
javadoc说通过Executors.newCachedThreadPool重用线程返回的服务.这怎么可能?一个线程只能通过调用启动一次start.那么他们如何实现呢?这个服务的线程是在一个无限循环中运行,它们的Runnable-s是按需替换的?
我有一个java应用程序和一个python启动器.java应用程序使用此代码锁定文件以避免多次启动:
java.nio.channels.FileLock lock = lockWrapper.getChannel().tryLock();
if (lock == null) {
logger.info("Anotheris already running");
}
lock.release();
staticLock = lockWrapper.getChannel().lock();
Run Code Online (Sandbox Code Playgroud)
python启动程序试图用fcntl锁定同一个文件,它可以.两个java进程不能这样做,并且两个python进程都不能独占锁定在同一个文件上.但是java和python可以在任何方向上.我正在使用openjdk 6和python2.7的xubuntu我使用portalocker进行python.
lockfile =open(lockfilename, 'w+')
portalocker.lock(lockfile, portalocker.LOCK_EX| portalocker.LOCK_NB)
Run Code Online (Sandbox Code Playgroud)
在win7上也可以正常工作.
我猜想标题中的查询如下:
select * from table t where (t.k1='apple' and t.k2='pie') or (t.k1='strawberry' and t.k2='shortcake')
... --10000 more key pairs here
Run Code Online (Sandbox Code Playgroud)
在我看来,这很冗长。还有更好的选择吗?(当前使用SQLite,可能使用MYSQL / Oracle。)
有没有办法从一个简单的python脚本退出任意值?实际上,我想带一个端口号返回.我在这里和文档中都读过,但发现只有解决方法......