update multithreading