Question: Am newbie to thread concept. I have little confusion over thread.

What is the difference between normally calling the method and calling the method using threading. What is the use of thread.join?

Example:
In the code behind file: normally calling the method

```
Getdata();

```

By using thread am calling this methd:

```
Thread th=new Thread(new ThreadStart(Getdata));

th.Start();

```

Which one yields high performance

Answer: 
By using threading you are able to let slow-running processes run "besides" the rest of your code.

With Join you are waiting for that code to complete.

Say for example that you are getting data over the network from 3 different slow servers. Then it's a good idea to launch tree threads getting this data and then joining on them before you do the calculation. In that way you are able to start the calculation when the slowest server has responded instead of the combined time of all three servers.

Regarding performance, you proably have a multi-core machine. By threading out you are able to utilize more cores, so you get better performance also.
The purpose of threading is to fulfill the need to run separate code in the same time. In general, if you have a source-code, all the lines in your source-code will be executed sequentially. Let's consider the case when you are sending an email to 20 receipients. If you send all the mails one after the other, then the total waiting time is the total time while your emails are delivered. If you create 20 threads, one for each email sending, then your waiting time will be roughly the time of your slowest mail, that's approximately 20x speedup. Also, let's consider you are playing a chess game against the computer. The engine has to constantly think about the best possible variation, but in the meantime its time is decreasing and it must be displayed graphically, also, sometimes sound effects should be displayed and so on.