小编Tom*_*Tom的帖子

处理Java ExecutorService任务中的异常

我正在尝试使用Java的ThreadPoolExecutor类来运行具有固定数量线程的大量重量级任务.每个任务都有许多地方,在这些地方可能因异常而失败.

我已经进行了子类化,ThreadPoolExecutor并且我已经覆盖了该afterExecute方法,该方法应该在运行任务时提供任何未捕获的异常.但是,我似乎无法使其发挥作用.

例如:

public class ThreadPoolErrors extends ThreadPoolExecutor {
    public ThreadPoolErrors() {
        super(  1, // core threads
                1, // max threads
                1, // timeout
                TimeUnit.MINUTES, // timeout units
                new LinkedBlockingQueue<Runnable>() // work queue
        );
    }

    protected void afterExecute(Runnable r, Throwable t) {
        super.afterExecute(r, t);
        if(t != null) {
            System.out.println("Got an error: " + t);
        } else {
            System.out.println("Everything's fine--situation normal!");
        }
    }

    public static void main( String [] args) {
        ThreadPoolErrors threadPool = new …
Run Code Online (Sandbox Code Playgroud)

java multithreading exception executorservice threadpoolexecutor

201
推荐指数
6
解决办法
15万
查看次数

Java:如何从泛型类型中获取类文字?

通常情况下,我看到人们使用这样的类文字:

Class<Foo> cls = Foo.class;
Run Code Online (Sandbox Code Playgroud)

但是,如果类型是通用的,例如List?这工作正常,但有一个警告,因为List应该参数化:

Class<List> cls = List.class
Run Code Online (Sandbox Code Playgroud)

那么为什么不加一个<?>呢?好吧,这会导致类型不匹配错误:

Class<List<?>> cls = List.class
Run Code Online (Sandbox Code Playgroud)

我认为这样的东西可行,但这只是一个简单的'语法错误:

Class<List<Foo>> cls = List<Foo>.class
Run Code Online (Sandbox Code Playgroud)

我如何Class<List<Foo>>静态获取,例如使用类文字?

可以@SuppressWarnings("unchecked")摆脱造成在第一个例子中的非参数使用目录的警告,Class<List> cls = List.class但我宁愿不要.

有什么建议?

java generics class literals

185
推荐指数
6
解决办法
14万
查看次数

字节顺序标记用Java解压缩文件读取

我正在尝试使用Java读取CSV文件.一些文件在开头可能有一个字节顺序标记,但不是全部.当存在时,字节顺序与第一行的其余部分一起被读取,从而导致字符串比较出现问题.

是否有一种简单的方法可以跳过字节顺序标记?

谢谢!

java byte-order-mark utf-8

106
推荐指数
6
解决办法
7万
查看次数

readdir()是否保证订单?

我正在使用opendir/readdir获取类似linux的系统上的文件列表.看来目录条目按文件名的字母顺序返回.但是,我在手册页中看不到有关此订单的任何内容.

谁能告诉我readdir是否保证订单?

c readdir

50
推荐指数
5
解决办法
3万
查看次数

将所有远程分支获取到裸Git存储库中

我设置了一个Github post-receive挂钩,每当推送到我的Github存储库时,它就会在我的web服务器上运行一个脚本.

当脚本运行时,我希望它保持存储库的本地裸克隆与我的Github存储库同步.为此,我让它运行此命令:

git fetch origin && git reset --soft refs/remotes/origin/master

然后,如果从我的工作站我推送到Github掌握,一切正常.但是,如果我推送到另一个远程分支,则更改不会反映在我的服务器的本地裸存储库中.

我假设有一些方法让脚本获取所有远程分支,但我不知道如何做到这一点.我知道新版本的git有一个-all选项用于获取/拉取,但我使用的是git版本1.6.3.3,它似乎没有这个选项.

有谁知道如何让我的脚本获取所有远程分支?

谢谢!

git github

15
推荐指数
2
解决办法
6414
查看次数

pthread_join是如何实现的?

我对线程有点新意,所以你必须原谅这个问题的天真.

如何pthread_join实现以及它如何影响线程调度?

我总是想象pthread_join用while循环实现,只是导致调用线程屈服,直到目标线程完成.像这样(非常近似的伪代码):


atomic bool done;

thread_run {

    do_stuff();
    done = true;

}

thread_join {

    while(!done) {
        thread_yield();
    //  basically, make the thread that calls "join" on
    //  our thread yield until our thread completes
    }
}

这是一个准确的描述,还是我过分简化过程?

干杯!

linux multithreading scheduling pthreads

10
推荐指数
2
解决办法
5518
查看次数

Sqlite3中时间戳之间的秒数差异

是否有可能获得Sqlite3中两个TIMESTAMP值之间的差异(以秒为单位)?

例如,我尝试了以下查询:

SELECT CURRENT_TIMESTAMP - my_timestamp FROM my_table;
Run Code Online (Sandbox Code Playgroud)

我总是'0'.谁能告诉我我做错了什么?(注意,我已经确认my_timestamp确实在过去.)

sqlite

10
推荐指数
2
解决办法
8371
查看次数

pip:优先处理私有pypi服务器

我正在使用Artifactory托管大量python模块。几次,https: //pypi.python.org/pypi上的新python模块将以相同的名称上传。当有人尝试使用pip从Artifactory安装我的模块之一时,这会导致问题。默认情况下,pip首先查找公共软件包。

这是我尝试过的:

1.我尝试过相应地修改.pypirc文件,

[distutils]
索引服务器=
        人为的
        pi

带有两个索引服务器的适当条目,但是我相当确定pip会忽略此信息。

2.我尝试手动指定要使用的索引服务器。

我可以指定--index-url--extra-index-url但当公共软件包的版本号高于私有软件包的版本号时,后者不能提供帮助。如果我指定前者,则找不到公共依赖项!就像我赢不了。

3.我尝试dependency_links在setup.py中指定。

...但此答案已弃用:pip忽略setup.py中的dependency_links

我如何配置pip来选择我的Artifactory存储库而不是公共存储库?

python pip

10
推荐指数
2
解决办法
2033
查看次数

我可以在Tomcat上运行.jar文件吗?

一个非常菜鸟的问题.我可以在Tomcat上运行.jar文件吗?我不是在构建一个网络应用程序.我只需要在其中运行一个带有HalloWorld的.jar.这是可能/适当的吗?

谢谢

java hosting tomcat jar

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

如何阻止XCode 4修改本地Git存储库?

我有一个Git存储库,出于我自己的原因,我想在XCode 4之外进行管理.我真正想要的是XCode只留下我的存储库.但是,我注意到如果将新项目保存在存储库中,XCode会将新项目添加到存储库中.

例如,假设我从一个简单的回购开始:

mkdir gittest; cd gittest
git init; touch a; git add a; git commit

我启动XCode并创建一个新项目.注意:我没有选中"为此项目创建本地git存储库"复选框.对于目标目录,我将其保存到目录中gittest.

git status 揭示了:

# On branch master
# Changes to be committed:
#   (use "git reset HEAD ..." to unstage)
#
#   new file:   gittest/gittest.xcodeproj/project.pbxproj
#   new file:   gittest/gittest/en.lproj/InfoPlist.strings
#   new file:   gittest/gittest/gittest-Info.plist
#   new file:   gittest/gittest/gittest-Prefix.pch
#   new file:   gittest/gittest/gittestAppDelegate.h
#   new file:   gittest/gittest/gittestAppDelegate.m
#   new file:   gittest/gittest/iPad/en.lproj/MainWindow_iPad.xib
#   new file:   gittest/gittest/iPad/gittestAppDelegate_iPad.h
#   new file:   gittest/gittest/iPad/gittestAppDelegate_iPad.m
#   new …

git xcode4

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