Multiply m = new Multiply("Hello, world!", 13, new ResultDelegate(ResultCallback));
Follwing things are happing in this statement
a. Value is passed to the Multiply class which is used as a input to the Thread.
b. New Delegate is created which will call ResultCallback from the Thread, which in turn is returning value back to the Program class.
This is the main essence of this program