better orderbook synchronozation

This commit is contained in:
7u83 2017-04-08 01:35:13 +02:00
parent 35e2160635
commit b22582399f

View File

@ -31,6 +31,7 @@ import gui.tools.NummericCellRenderer;
import java.awt.Component; import java.awt.Component;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.JTable; import javax.swing.JTable;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.DefaultTableCellRenderer;
@ -130,6 +131,8 @@ public class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiv
boolean oupdate = false; boolean oupdate = false;
boolean new_oupdate = false; boolean new_oupdate = false;
long ouctr = 0;
void oupdater() { void oupdater() {
ArrayList<Order> ob = Globals.se.getOrderBook(type, depth); ArrayList<Order> ob = Globals.se.getOrderBook(type, depth);
model.setRowCount(ob.size()); model.setRowCount(ob.size());
@ -141,25 +144,34 @@ public class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiv
row++; row++;
} }
oupdate = false; synchronized (this) {
oupdate = new_oupdate;
new_oupdate = false;
}
if (oupdate) {
SwingUtilities.invokeLater(() -> {
oupdater();
});
}
} }
@Override @Override
public synchronized void UpdateOrderBook() { public void UpdateOrderBook() {
if (oupdate) { synchronized (this) {
new_oupdate=true; if (oupdate) {
return; new_oupdate = true;
return;
}
oupdate = true;
} }
oupdate = true;
SwingUtilities.invokeLater(() -> { SwingUtilities.invokeLater(() -> {
oupdater(); oupdater();
}); });
} }
/** /**