小编zel*_*ler的帖子

Java - 为什么System和Runtime类具有相同的方法?

我最近在想,为什么两者都做java.lang.Runtime,并java.lang.System有库加载,垃圾收集和类似的操作同样的方法.是因为历史原因,为了方便,还是真的不同?这两个类都可以从JDK 1.0获得......

java api runtime system

9
推荐指数
1
解决办法
800
查看次数

是否可以中断ExecutorService的特定线程?

如果我有一个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)

java multithreading executorservice

6
推荐指数
1
解决办法
4967
查看次数

stringbuilder调用中的Java字符串concat

据我所知,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,我会失去整个好处?或者这个排队没有意义?:)

java string stringbuilder

5
推荐指数
2
解决办法
2131
查看次数

newCachedThreadPool如何重用线程?

javadoc说通过Executors.newCachedThreadPool重用线程返回的服务.这怎么可能?一个线程只能通过调用启动一次start.那么他们如何实现呢?这个服务的线程是在一个无限循环中运行,它们的Runnable-s是按需替换的?

java multithreading executorservice

5
推荐指数
1
解决办法
312
查看次数

Java和python进程可以独占锁定linux上的相同文件

我有一个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上也可以正常工作.

python java linux

5
推荐指数
1
解决办法
594
查看次数

一键选择多个记录

我猜想标题中的查询如下:

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。)

sql

5
推荐指数
1
解决办法
2028
查看次数

返回值超出sys.exit默认区间[0-127]

有没有办法从一个简单的python脚本退出任意值?实际上,我想带一个端口号返回.我在这里和文档中都读过,但发现只有解决方法......

python return-value exit

1
推荐指数
1
解决办法
251
查看次数