我有以下代码
public String ls() throws IOException, InterruptedException {
String pwd = getPWD();
String inodePath = "Upload/Files" + pwd + "inode";
// Request the inode file first
Peer.setFileReceivedCheck(false);
Inode i = new Inode();
i.requestInode(pwd + "inode");
boolean fileCheck = Peer.getFileReceivedCheck();
System.out.println(fileCheck);
while (fileCheck == false) {
System.out.println(); // DOES NOT WORK IF THIS LINE IS REMOVED!!
fileCheck = Peer.getFileReceivedCheck();
}
System.out.println(fileCheck);
return i.readFromInode(inodePath);
}
在上面的 java 方法中,fileCheck
变量跟踪从网络下载文件的时间,并在文件下载完成时变为 true
;以便在文件下载完成时返回函数。
我面临的奇怪问题是,如果我删除上面的行(只有一个println的行);该方法卡在while循环中,即使文件已经下载,也不会返回!知道为什么会这样吗?
编辑:这不是在单独的线程中运行。另一个类(Peer.java
)中的文件下载代码在单独的中运行。同样,fileCheck的getter也在线程之外。
您是否尝试添加一个小超时(100ms),而不是println()
?
请以$DEITY的名义,不要使用热投票。停下来。现在。你在浪费数十亿个周期,你会让整个系统的响应性降低,而你在等待网络上的东西。使用回调——我们在2014年,这不是火箭科学。
也就是说,用这个替换while循环的内容:
Object o = new Object();
synchronized(o) {
fileCheck = Peer.getFileReceivedCheck();
}
发生的情况是,您的检查可能只是返回一个非易失性字段,编译器可以自由地优化它——除非您的代码达到同步点。
好的,所以我有一个监视线程,它检查ArrayList的大小,并在该大小大于某个数字后执行某些操作。我现在遇到的问题是大小值永远不会更新,除非我的循环中有打印语句。这里有一些代码来显示我到底要做什么。 上面的代码不起作用。它永远不会进入 if 语句。但是,这工作正常: EDIT: getSize()代码: 注意:我正在运行另一个线程,该线程正在更新并添加到我的 t 类中的列表中。 有帮助吗?当我试图
Python 中,while 循环和 if 条件分支语句类似,即在条件(表达式)为真的情况下,会执行相应的代码块。不同之处在于,只要条件为真,while 就会一直重复执行那段代码块。 while 语句的语法格式如下: while 条件表达式: 代码块 这里的代码块,指的是缩进格式相同的多行代码,不过在循环结构中,它又称为 循环体。 while 语句执行的具体流程为:首先判断条件表达式的值,
问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: 为什么此代码给出“无法访问的语句”错误? 这个问题似乎很简单,我在一本书中发现了这个问题。如果有人帮助我弄清楚为什么我出错了。 我认为,根据我的看法,输出应该 在dooutside内部* 。但是,它显示了 编译器错误:Unreachable Statement 。然后,我试图找出原因,它显示了 **编译错误:Unreachabl
问题内容: 我想每次插入带有日期+ 1的行。这是一个简单的SQL循环。我正在使用SSIS,因此StartDate和Enddate是变量。 这是我的代码: 错误信息: 消息156,级别15,状态1,行11关键字’select’附近的语法错误。 问题答案: 无需在声明。 代替 和
本文向大家介绍简单掌握C++编程中的while与do-while循环语句使用,包括了简单掌握C++编程中的while与do-while循环语句使用的使用技巧和注意事项,需要的朋友参考一下 While 语句 重复执行语句,直到表达式计算为零。 语法 备注 expression 的测试在每次执行循环前发生;因此 while 循环执行零次或更多次。 表达式必须是整型、指针类型或包含明确的整型或指针类型转
我正在开发一个简单的python程序,其中包括创建一个圆圈“按钮”,然后让用户在圆圈内单击。如果他们没有点击圆圈,会出现一条消息,说明他们在圆圈外点击,应该再试一次。然而,在最后一部分,我得到了一个关于代码的无休止的循环,尽管使用了中断。是否有任何人可以帮助查看是否存在错误?谢谢