concurrency task parallelism single threaded foreground threaded return result cancel thread background thread threadppool thread Data parallelism IO Parallelism debugging syncronization