小编Tah*_*tar的帖子

Java:在某个队列大小之后阻止提交的ExecutorService

我正在尝试编写一个解决方案,其中单个线程生成可以并行执行的I/O密集型任务.每个任务都有重要的内存数据.所以我希望能够限制暂时待处理的任务数量.

如果我像这样创建ThreadPoolExecutor:

    ThreadPoolExecutor executor = new ThreadPoolExecutor(numWorkerThreads, numWorkerThreads,
                                  0L, TimeUnit.MILLISECONDS,
                                  new LinkedBlockingQueue<Runnable>(maxQueue));
Run Code Online (Sandbox Code Playgroud)

然后在队列填满并且所有线程都已忙时executor.submit(callable)抛出RejectedExecutionException.

executor.submit(callable)当队列已满且所有线程都忙时,我该怎么做才能阻塞?

编辑:我试过这个:

executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
Run Code Online (Sandbox Code Playgroud)

它有点实现了我想要实现的效果但是以一种不雅的方式(基本上被拒绝的线程在调用线程中运行,因此这阻止了调用线程提交更多).

编辑:(提问后5年)

对于阅读此问题及其答案的任何人,请不要将接受的答案作为一个正确的解决方案.请仔细阅读所有答案和评论.

java concurrency executorservice threadpool

73
推荐指数
5
解决办法
4万
查看次数

Android WebView是否需要打开外部URL的权限?

我正在尝试以下示例,但使用外部URL: 使用WebViews

该示例显示如何从assets文件夹加载HTML文件(file:// url)并将其显示在WebView中.

但是当我尝试使用外部网址时(例如http://google.com))时,我总是收到"网站不可用"错误.Android的内置浏览器可以访问所有外部URL.

我怀疑它与权限有关,但无法确认.

android http webview

23
推荐指数
2
解决办法
2万
查看次数

Ant目标的"if"和"depends"的评估顺序是什么?

也就是说,当testSetupDone求值为false时会调用以下目标,在依赖链中执行目标吗?

<target name="-runTestsIfTestSetupDone" if="testSetupDone" depends="-runTests" />
Run Code Online (Sandbox Code Playgroud)

ant

20
推荐指数
2
解决办法
2万
查看次数

是否有任何SQL验证器可以检查多个数据库服务器的语法?

是否有任何SQL验证器可以检查多个数据库服务器的语法?

例如,我可能想检查特定查询是否适用于Oracle,MySQL和SQL Server.

我更关心SQL语法而不是被查询的实际模式,因此可以捕获主要语法错误的工具,比如检测limitSQL Server和Oracle中不支持该子句就足够了.


编辑:

有几个答案建议检查特定DBMS或ANSI标准的语法.

我正在寻找可能在两个或多个数据库(比如SQL Server和Oracle)之间定位某种功能联合的可能性.我希望能够使用我在特定应用程序中定位的所有DBMS支持的任何SQL功能.

我不确定这是否值得.我认为这取决于几个数据库共享的非ANSI功能的数量.如果只有极少数,那么最好是以ANSI标准为目标.

mysql sql sql-server oracle validation

18
推荐指数
1
解决办法
2万
查看次数

詹金斯"我将修复构建"插件

有没有人知道是否有一个Jenkins/Hudson插件,当构建被破坏时,它允许你设置一些状态(就像我将修复它!),以便团队中的其他人知道

  • 有人在研究这个问题
  • 谁在研究这个问题

谢谢你的帮助

continuous-integration hudson hudson-plugins jenkins

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

您使用哪些工具和技术来修复浏览器内存泄漏?

我正在尝试修复IE 7中的内存泄漏.使用Drip进行调查,但是当大多数动态生成的DOM元素没有唯一ID时,它没有多大帮助.

提示?

javascript memory internet-explorer

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

Java:从最终字段可到达的对象的最终字段冻结

标题为" Core Java Concurrency "的DZone refcard 声明:

设置后,无法更改最终字段值.将对象引用字段标记为final不会阻止从该字段引用的对象稍后更改.例如,最终的ArrayList字段不能更改为不同的ArrayList,但可以在列表实例上添加或删除对象.

最终字段冻结不仅包括对象中的最终字段,还包括从这些最终字段可到达的所有对象.

我对第二个陈述并不完全清楚.这是否意味着如果我在A类类型的A类中有一个final字段,而后者又有一个Integer类型的最终字段,那么A类实例的最终字段冻结只有在最后一个字段冻结b.c已经发生之后才会完成?

public class A{

  public final B b = new B();

}

public class B{ 

  public final Integer c = 10;

}
Run Code Online (Sandbox Code Playgroud)

java concurrency

11
推荐指数
2
解决办法
2758
查看次数

评估数组单调性的算法(即判断数组的"排序性")


编辑:哇,很多很棒的回复.是的,我使用它作为一个适应度函数来判断遗传算法执行的排序质量.因此,评估成本很重要(即,必须快速,最好O(n).)


作为我正在使用的AI应用程序的一部分,我希望能够根据其单调性(也就是其"排序性")对整数的候选数组进行评级.目前,我正在使用一种计算最长排序运行的启发式算法,然后将其除以数组的长度:

public double monotonicity(int[] array) {
    if (array.length == 0) return 1d;

    int longestRun = longestSortedRun(array);
    return (double) longestRun / (double) array.length;
}

public int longestSortedRun(int[] array) {

    if (array.length == 0) return 0;

    int longestRun = 1;
    int currentRun = 1;

    for (int i = 1; i < array.length; i++) {
        if (array[i] >= array[i - 1]) {
            currentRun++;
        } else {
            currentRun = 1;
        }

        if (currentRun > longestRun) longestRun = currentRun;
    }

    return …
Run Code Online (Sandbox Code Playgroud)

math artificial-intelligence information-theory genetic-algorithm

9
推荐指数
2
解决办法
1007
查看次数

如何通过命令行从CVS获取新添加文件的特定修订版?

我们内部编写的工具之一是提供了以下形式的cvs提交跟踪:

Checking in src/com/package/AFile.java;
    /home/cvs/src/com/package/AFile.java,v <-- Afile.java
    new revision: 1.1.2.56; previous revision: 1.1.2.55
    done
Run Code Online (Sandbox Code Playgroud)

然后,该工具通过cvs update -r 1.1.2.56在已经签出特定代码分支的工作目录中发出命令从cvs获取文件.

如果工作目录中存在现有版本的AFile.java,则此命令可正常工作.但是当我们获得工作目录中没有版本的文件的跟踪时,该命令无法获取该文件.

有办法吗?

cvs version-control command-line

7
推荐指数
1
解决办法
2万
查看次数

Eclipse:如何在CVS中显示更改此行的用户?

曾经有人向我展示了一个很酷的IntelliJ Idea插件,可以在Java源代码编辑器中显示来自CVS的所有用户提交信息.

它在窗口右侧有一个垂直条,用户更改/提交的每个代码块都以不同颜色突出显示,鼠标悬停将显示有关用户和版本等的详细信息.

我渴望在Eclipse中有类似的东西.

有什么指针吗?

eclipse cvs history visualization

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