Java for循环线程锁

时间:2016-01-30 13:43:02

标签: java multithreading for-loop locking

我希望程序循环17次通过模型,但如果我循环任何超过5的程序冻结,我尝试查找问题,这是因为edt无法执行繁重的任务,但我已经尝试过了在代码中创建新的线程来解决它但我似乎无法正确地弄清楚它。

P.S:程序有效,所以它不是实际程序的问题,它是循环(循环17次)。

r = /
    (?<=\n) # match \n in a positive lookbehind
    \s      # match a whitespace character
    (?=\n)  # match \n in a positive lookahead
    /x      # extended/free-spacing regex definition mode

text.gsub(r,"")
    #=> "test test1 \n\n\n\n\n\n\n\n\n\n\n\n\n\n test2 \n"

这是 modelSelect 功能

text.gsub(/\n\s(?=\n)/, "\n")

1 个答案:

答案 0 :(得分:1)

我认为你的问题是缺少同步。

您启动两个批处理文件(out.println("C:/TERRIERS/terrier/bin/trec_terrier.bat -i"); out.println("C:/TERRIERS/terrier/bin/trec_terrier.bat -r");)并且无需等待完成这些命令即可调用modelSelect()并启动下两个批处理文件。

整个过程的java方面非常快 - 比批处理文件快得多。

最好的解决方案是等待批处理文件完成。如果无法做到这一点,那么至少要将代码更改为

    out.println("C:/TERRIERS/terrier/bin/trec_terrier.bat -i");
    out.println("C:/TERRIERS/terrier/bin/trec_terrier.bat -r");

    Thread.sleep(100);

    //change model
    modelSelect();