using external thread to run
using external thread to run