better orderbook synchronozation

This commit is contained in:
7u83 2017-04-08 01:35:13 +02:00
parent 35e2160635
commit b22582399f
1 changed files with 21 additions and 9 deletions

View File

@ -31,6 +31,7 @@ import gui.tools.NummericCellRenderer;
import java.awt.Component;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableCellRenderer;
@ -121,7 +122,7 @@ public class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiv
model = (DefaultTableModel) this.list.getModel();
trader_column = list.getColumnModel().getColumn(0);
list.getColumnModel().getColumn(1).setCellRenderer(new NummericCellRenderer(3));
list.getColumnModel().getColumn(2).setCellRenderer(new NummericCellRenderer(0));
list.getColumnModel().getColumn(2).setCellRenderer(new NummericCellRenderer(0));
cfgChanged();
// Globals.se.addBookReceiver(Exchange.OrderType.BUYLIMIT, this);
Globals.addCfgListener(this);
@ -130,6 +131,8 @@ public class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiv
boolean oupdate = false;
boolean new_oupdate = false;
long ouctr = 0;
void oupdater() {
ArrayList<Order> ob = Globals.se.getOrderBook(type, depth);
model.setRowCount(ob.size());
@ -141,24 +144,33 @@ public class OrderBook extends javax.swing.JPanel implements Exchange.BookReceiv
row++;
}
oupdate = false;
synchronized (this) {
oupdate = new_oupdate;
new_oupdate = false;
}
if (oupdate) {
SwingUtilities.invokeLater(() -> {
oupdater();
});
}
}
@Override
public synchronized void UpdateOrderBook() {
public void UpdateOrderBook() {
if (oupdate) {
new_oupdate=true;
return;
synchronized (this) {
if (oupdate) {
new_oupdate = true;
return;
}
oupdate = true;
}
oupdate = true;
SwingUtilities.invokeLater(() -> {
oupdater();
});
}