Go Routines
Go routines are lightweight virtual threads. Golang creates and manages them.
different to Java
In Java, every thread maps to an OS thread.
In Golang, though, one OS thread is split into many virtual threads called Goroutines.
Golang has a built-in scheduler. It queues and schedules the threads itself.