update using multithread