大学の授業の一環として、Javaでマルチスレッドダウンロードサーバーを作成する必要があります。 すべてが1つのビットからスムーズに実行されています。ダウンロードするたびに、各アイテムの合計ダウンロード数をサーバーに表示させる必要があります。これまで私は、両方のクライアントが同時に要求しない限り、動作させるようにしました。コードは以下の通りです。誰かが仲間を持っているなら、私はとても感謝しています。また、thread.sleep部分を含める必要があり、その畳み込まれた方法でカウンタをインクリメントする必要があります。Javaでの同時ダウンロードカウンタ
//Snipper from Protocol.java
if (theInput.equals("1")) {
theOutput = "The program displays a message... Another? Y or N";
DownloadCounter counter = new DownloadCounter();
count = DownloadCounter.getcount();//count is a var in Protocol.java it is static
int tmp = count;
try {
Thread.sleep(5000);
} catch (InterruptedException ex) {
System.out.println("sleep interrupted");
}
count = tmp + 1;
DownloadCounter.setcount(count);
System.out.println("Download Total " + count);
state = ANOTHER;
DownloadCounter:インクリメントするための方法を必要とDownloadCounter
//DownloadCounter.java
public class DownloadCounter {
private static int count;
public static synchronized int getcount(){
return count;
}
public static synchronized void setcount(int num){
DownloadCounter.count = num;
}
}
+1生産コードではもちろん、AtomicIntegerを使用します。一方、OPは、簡単な解決策をとる前に、演習のポイントが自分自身で同期を行うかどうかを教授に尋ねるべきです... – thkala
@thkala良い点は、OPは間違いなく教授と相談してください演習の目標を理解する(つまり、同期や原子操作について学ぶ)。 – Kiril