问题是这样的,我们操作系统课设的题目之一是要模拟进程调度,我的做法是这样的:界面中存在一个VBox控件以保存多个就绪进程(每个进程以TextField表示),同时一个ProgressBar不断从就绪进程队列的队首得到当前进程,根据该进程的运行时间与进度条相绑定起来,在运行完毕以后再调度下一个进程,此部分代码如下:
这样的话,如果当前只有一个就绪进程,那么进度条是可以正常显示,如果大于一个进程的话,就会只显示最后一个进程的进度情况。为了解决这个问题,我在上面代码段下面加了一个Thread.sleep(currentPcb.getRuntime()),但是这样的话每个进程的进度情况都不显示了,而在最后直接得到结果。我知道在java控制台下面这样处理是可以的,但不太明确界面线程的一些细节,希望得到大家的帮助!(我是利用循环来判断就绪队列当中是否存在就绪进程的)
除此之外,我在每次循环末结束时都会VBox.getChildren().remove()一下,但是这些remove()效果会在退出整个循环的时候才出现而不是每次循环结束都出现,不知其中的原因。