時々ルーターにログインして変更を加える必要があるプロジェクトがあります。Eclipseでは、変更が必要なすべてのものを処理する別のプロジェクトがあり、マルチスレッドプロジェクトであるメインプロジェクトのビルドパスにあります。私の問題は、時々 2 つのスレッドがルーターにアクセスしようとして、物事が台無しになることです。1 つのスレッドだけがコードの特定の部分にアクセスできるようにするためにできることはありますか?
これは、メインのマルチスレッド アプリケーションの関連コードです。
if (totalLogins > 10)
{
IpManager.rebootRouter();
Thread.sleep(4000);
totalLogins = 0;
composedMessagesWithThisIP = 0;
}
そして、他のプロジェクトでは、これは私が持っているものです
public synchronized static void rebootRouter()
{
try
{
//code related to restart modem
}
catch (Exception e)
{
}
}
そのため、メソッドを同期させましたが、時々複数のスレッドが「rebootRouter」メソッドにアクセスすると思います。これは私のメインアプリケーションで問題を引き起こします。
IpManager.rebootRouter() を 1 つのスレッドのみで実行するための最良の方法と最も効果的な方法は何ですか?
よろしく!