use filter to solve multithread conflict