0
我正在嘗試爲測試目的創建100k以太幣錢包。所有人都應該使用相同的密碼短語,因爲現在沒關係。我用10個線程啓動了這個代碼,它凍結了我的macbook,我不得不重新啓動它。 3線程有點工作,但它仍然非常慢(每秒產生約6個錢包)。怎麼了?我使用web3j依賴在Java中使用10個線程生成以太坊錢包凍結電腦
public EthWallets(String[] args)
{
File destinationDir = new File("ethwallets/");
if(args[1].equalsIgnoreCase("create")) {
try {
int count = Integer.valueOf(args[2]);
if(count > 10)
{
final int threadedCount = count/10;
for(int i = 0; i < 10; i++)
{
Thread t = new Thread()
{
@Override
public void run() {
for(int j = 0; j < threadedCount; j++)
{
create("passphph", destinationDir);
}
}
};
t.start();
}
}
else
for(int i = 0; i < count; i++)
create("passphph", destinationDir);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public void create(String passPhrase, File destinationDirectory)
{
try {
String path = WalletUtils.generateFullNewWalletFile(passPhrase, destinationDirectory);
// Credentials credentials = WalletUtils.loadCredentials(passPhrase, new File(path));
// System.out.println("address: " + credentials.getAddress());
// System.out.println("private: " + credentials.getEcKeyPair().getPrivateKey());
// System.out.println("public: " + credentials.getEcKeyPair().getPublicKey());
} catch (Exception e) {
e.printStackTrace();
}
}
因爲您的處理器運行的線程太多,無法處理?使用更少的線程或更好的處理器 – konsolas
是否真的有那麼多計算?這只是生成錢包的幾個加密函數 –
你說你的問題是你的macbook凍結了。個人計算可能不是密集型的,但是其中的10萬個緊跟在一起。我假設你有一臺雙核心處理器/超線程的筆記本電腦,所以這項任務最大限度地減少了每一個線程,給操作系統和用戶界面留下了很小的空間。 – konsolas