作为我们大学课程的一部分,我们必须使用Java构建多线程下载服务器。 除了一点之外,一切都运行平稳:我们必须让服务器在每次下载时显示每个项目的总下载次数。到目前为止,我已经得到它的工作,除非两个客户同时要求它。代码如下,如果任何人有任何ides,我会非常感激。我们还必须包含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.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 2012-02-23 18:49:04
@thkala好点,OP应该向他们的教授咨询了解练习的目标(即了解同步或原子操作)。 – Kiril 2012-02-23 19:15:26