/******************************************************************************* * Copyright (c) 2007, 2018 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation *******************************************************************************/ package org.simantics.db.impl.query; import org.simantics.db.exception.DatabaseException; import org.simantics.db.impl.graph.ReadGraphImpl; public abstract class SyncIntProcedure implements IntProcedure, ThreadRunnable { int barrier = 1; // final private AtomicInteger barrier = new AtomicInteger(1); public SyncIntProcedure() { } protected final void inc() { // System.err.println("inc " + barrier.get()); ++barrier; // barrier.incrementAndGet(); } protected final void dec(ReadGraphImpl graph) throws DatabaseException { // System.err.println("dec " + barrier.get()); if((--barrier) == 0) { run(graph); } } @Override public void exception(ReadGraphImpl graph, Throwable t) throws DatabaseException { throw new Error("Errors are not supported,", t); } }