怎么使用一线程实时监控一个arraylist的长度()

如何使用一线程实时监控一个arraylist的长度(求助)
模拟场景:从数据源每读取一行数据后,保存在arraylist中。线程起到监控arraylist长度的功能,当arraylist长度大于等于5时,便将这5行数据打包发送,并清除arraylist中数据,然后继续监听,重复上述过程。请问各位大致该怎么实现阿,本人新手啊
------解决思路----------------------
引用:
这么久居然还没人来。。。。。

简单实现了下,代码仅供参考怎么使用一线程实时监控一个arraylist的长度()

import java.util.Arrays;
import java.util.LinkedList;

/**
 * @author zhuangqing
 */
public class MoniterTest {
    public static void main(String[] args) {
        DataHandler dataHandler = DataHandler.getInstance();
        //模拟连续添加1000条数据
        for (int i = 0; i < 1000; i++) {
            dataHandler.addData(i);
        }
    }
}

class DataHandler {
    private LinkedList<Integer> linkedList = new LinkedList<Integer>();
    public static final int BATCH_SIZE = 5;
    private static final DataHandler instance = new DataHandler();
    private DataHandler() {
        //监听线程
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    try {
                        if (linkedList.size() >= BATCH_SIZE) {
                            int[] sendData = new int[BATCH_SIZE];
                            for (int i = 0; i < BATCH_SIZE; i++) {
                                sendData[i] = linkedList.removeFirst();
                            }
                            System.out.println("send data --> " + Arrays.toString(sendData));
                        }
                        Thread.sleep(100);
                    } catch (InterruptedException ignore) {}
                }
            }
        }).start();
    }

    /**
     * 单例实现
     * @return
     */
    public static DataHandler getInstance() {
        return instance;
    }

    /**
     * 添加数据
     * @param data
     */
    public void addData(int data) {
        linkedList.addLast(data);
    }
}


------解决思路----------------------
其实不用线程更好

import java.util.ArrayList;

public class MyList extends ArrayList<Object> {
/**
 * 
 */
private static final long serialVersionUID = 1L;

@Override
public boolean add(Object e) {
boolean flag =super.add(e);
if(this.size()>=5){
//发送数据
}
return flag;
}
}