The concur.threads effect
Code that uses threads must use the concur.threads effect, e.g.,
via concur.threads.env.spawn to start new threads.
To wait for a thread t to finish, we can call t.join.
We can start several threads and wait for all of them to finish as well. Note that the output may vary between runs since the order in which the code in the parallel threads is executed is not specified: