小编che*_*koo的帖子

具有'忙'线程的threadPoolExecutor如何被杀死?

我的问题有点复杂.让我试着彻底解释一下,但是如果你需要更多的细节,请随时问我,我会添加它们.

我最近(通过实验)了解到,如果一个线程持续工作,就像一个while(true)循环中的整数运算,中断线程对它没有影响.线程继续没有发生任何事情.

现在,使用shutDown()或shutDownNow()方法杀死ThreadPoolExecutors.我检查了这些方法的代码,他们使用interrupt()调用来杀死一个线程.所以,如果所有线程都在忙着做什么,那么执行者怎么会被杀?它是如何被杀死的,例如当我们在spring应用程序中使用它时.

一个这样的执行者看起来像:

import java.io.File;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test {
    public static void main(String[] a) {
        ExecutorService ex = Executors.newFixedThreadPool(50);
        for (int i = 0; i < 50; i++) {
            ex.execute(new Thread() {
                public void run() {
                    try {
                        File f = File.createTempFile("testfile", "txt");
                        while (true) {
                            f.canRead();
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } finally {
                    }
                }
            });
        }

        ex.shutdown();
        ex.shutdownNow();
    }
}
Run Code Online (Sandbox Code Playgroud)

java multithreading

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

在maven集成中运行Ruby单元测试

有没有人有从Maven中运行Ruby编写的单元测试的经验.

任何输入,如要使用的库/ maven插件,将受到高度赞赏!

我们已经在使用Maven + hudson + Junit了.但我们正在引入Ruby单元测试,并且找不到任何同样好的组合.

ruby unit-testing maven

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

为允许多个值的休眠验证器提供值

我有一个Hibernate验证器,它根据给定的字符串列表验证字段.我会把代码放在更清晰的位置.

    @Target({ METHOD, FIELD, ANNOTATION_TYPE })
    @Retention(RUNTIME)
    @Constraint(validatedBy = AllowedValuesValidator.class)
    @Documented
    public @interface AllowedValues {
      ...
      String[] value();
    }
Run Code Online (Sandbox Code Playgroud)

以前我们用它作为

  @AllowedValues("value1")
  private String method;
Run Code Online (Sandbox Code Playgroud)

现在我们需要将它用于一系列值,方法可以有多个值.我试过两个:

  @AllowedValues("Standard", "One-Day", "Two-Day", "Three-Day")
  private String method;     
Run Code Online (Sandbox Code Playgroud)

  @AllowedValues("Standard, One-Day, Two-Day, Three-Day")
  private String method;
Run Code Online (Sandbox Code Playgroud)

第一个不编译,第二个将整个字符串作为允许值(这很明显).

任何想法如何在这里指定多个值?

java hibernate-validator

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