the new thread doesn' start running until we call the start(method on the object in this casethe thread immediately pauses to wait for input from the keyboard in the meantimethe original thread continues executing at the point start was called it starts calculating squares inside while loop the condition in the while loop checks if the inputreader thread has exited its run method yetonce it doesit outputs some summary information to the screen if we run the example and type the string "hello world"the output looks as followsenter some text and press enterhello world calculated squares up to while you typed 'hello worldyou willof coursecalculate more or less squares while typing the string as the numbers are related to both our relative typing speedsand to the processor speeds of the computers we are running thread only starts running in concurrent mode when we call the start method if we want to take out the concurrent call to see how it compareswe can call thread run(in the place that we originally called thread start(the output is tellingenter some text and press enterhello world calculated squares up to while you typed 'hello worldin this casethe thread never becomes alive and the while loop never executes we wasted lot of cpu power sitting idle while we were typing there are lot of different patterns for using threads effectively we won' be covering all of thembut we will look at common one so we can learn about the join method let' check the current temperature in the capital city of every province in canadafrom threading import thread import json from urllib request import urlopen import time cities 'edmonton''victoria''winnipeg''fredericton'"st john' "'halifax''toronto''charlottetown'