All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.harium.etyl.util.concurrency.ConcurrentList Maven / Gradle / Ivy

package com.harium.etyl.util.concurrency;

import java.util.ArrayList;
import java.util.List;

public class ConcurrentList {

	private List list;
	
	private List alternativeList;
	
	private boolean locked = false;
	
	public ConcurrentList(int initialSize) {
		super();
		
		list = new ArrayList(initialSize);
		alternativeList = new ArrayList(initialSize);
	}
	
	public ConcurrentList() {
		super();
		
		list = new ArrayList();
		alternativeList = new ArrayList();
	}
	
	public void add(T t) {
		if(!locked) {
			list.add(t);
		} else {
			alternativeList.add(t);
		}
	}
	
	public List lock() {
		alternativeList = new ArrayList();
		locked = true;
		List temp = new ArrayList(list);
		return temp;
	}
	
	public void unlock() {
		list.clear();
				
		if (!alternativeList.isEmpty()) {
			list.addAll(alternativeList);
		}

		locked = false;
	}

	public List getList() {
		return list;
	}

	public void clear() {
		list.clear();
	}

	public boolean isEmpty() {
		return list.isEmpty() && alternativeList.isEmpty();
	}

	public void removeAll(List removeList) {
		if(!locked) {
			for(T t: removeList) {
				list.remove(t);
			}
		}		
	}
		
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy