在我的代码中,我有一个主类,它是类客户端。该课程可以有多个类读者的读者。 Reader需要连接到计算机,然后客户端必须等待来自服务器的指令,然后客户端才能运行Reader。以下是我想要做的事情:
1)有一个线程检查所有读卡器是否已连接,以及读卡器是否断开连接以尝试重新连接。
2)同时,获得活跃读者的阅读。
实现这一目标的最佳方法是什么?理想情况下,我的课程看起来像这样:
<script>
function sortTable(n) {
var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
table = document.getElementById("myTable");
switching = true;
dir = "asc";
while (switching) {
switching = false;
rows = table.getElementsByTagName("TR");
for (i = 1; i < (rows.length - 1); i++) {
shouldSwitch = false;
x = rows[i].getElementsByTagName("TD")[n];
y = rows[i + 1].getElementsByTagName("TD")[n];
if (dir == "asc") {
if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
shouldSwitch= true;
break;
}
} else if (dir == "desc") {
if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
shouldSwitch = true;
break;
}
}
}
if (shouldSwitch) {
rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
switching = true;
switchcount ++;
} else {
if (switchcount == 0 && dir == "asc") {
dir = "desc";
switching = true;
}
}
}
}
</script>
然而,返回的方法read()是有问题的。我会做这样的事情,但这对我来说似乎有些混乱:
public Class Reader implements Runnable{
private boolean isConnected;
public void connect(){
....
}
public String read(){
....
return readings;
}
}
这种方式合适吗?或者有更合适的方法(Executor)?
编辑: 客户的布局如下:
public Class Reader implements Runnable{
private int id;
private boolean isConnected,isRunning;
public String readings;
public void run(){
while(isRunning){
if(!isConnected){
connect();
}
else if(isRunning){
read();
}
}
}
private void connect(){
....
}
private void read(){
....
readings=...;
// Client await()
doneSignal[id].countDown();
// Client reads readings here
// When until signal from Client and sends countDown()
readSignal[id].await();
}
}
答案 0 :(得分:1)
然而,返回的方法read()是有问题的。
如果您的Reader类实现了Runnable。但它不一定非得。您可以实现callable。现在你的&#34;主要&#34; Reader方法不再是run()
,而是call()
。只需让它返回Reader.read()
方法的返回值。
更新:此外,实施可调用可以让您更改通话方法的一般行为 - 例如返回信息性退出值 - 如果您的读者断开连接,将此类事件的管理权交给您软件的主/编排者类。