2017-02-10 42 views
0

我有密碼的數組列表。我想檢查文件是否用該密碼解密。我想要使​​用線程來應用字符串轉換,比如將數字添加到字符串的末尾。使用java線程或線程池來做到這一點的最佳方式是什麼?如何使Java線程並行化ArrayList操作?

for (String pass : passwordDictionary) { 
       setPassword(password); 
       decrypt(secret) 
       setPassword(password+numbers); 
       decrypt(secret) 
+0

最佳的方法是使用[並行流(https://docs.oracle.com/javase/tutorial/collections/streams /parallelism.html)。 – Andreas

+0

java 8爲這樣的任務提供了並行流API,你知道嗎? – user1516873

回答

3

一個可能的方法是使用Stream.parallel()

passwordDictionary.stream().parallel().forEach(password -> { 
       setPassword(password); 
       decrypt(secret) 
       setPassword(password+numbers); 
       decrypt(secret) 
}) 
+0

假設他在Java8上 – ferahgo

+0

謝謝。我還沒有在Java中使用過lambda表達式,但聽起來很有趣。是否有可能知道有多少踏板?平行初始化? – Wideem

+2

@Wideem並行流使用'Fork/Join框架'。所以它可以有'N-1'個線程,其中'N'是默認情況下處理器的數量。 http://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html和http://docs.oracle.com/javase/tutorial/essential/concurrency/forkjoin.html –