Multi Threading: Defnition of Thread
Multi Threading: Defnition of Thread
PROCESS
DEFNITION OF CPU BURST TIME:THE AMOUNT OF TIME TAKEN BY THE THREAD/PROCESS FROM CPU FOR ITS
COMPLETE EXECUTION IS CALLED CPUBURST TIME.
CPU BURST TIME IS DECIDED BY O.S WHEN THE PROGRAMIS ABOUT TO
EXECUTE.
IN REALWORLD WE WRITE TWO TYPES OF APPLICATIONS...PROCES BASED Vs
THREAD BASED APPS (OR) NON MULTITASKING Vs MULTI TASKING APPS:-
*PROCESS BASED
*THREAD BASED APPS(TBA)
APPS(PBA)CONTAINS SINGLE FLOW
PROVIDES MULTIPLE FLOW OF
OF CONTROL.
CONTROLS.
**EG:-ALL THE SINGLE THREAD
**EG:- ALL THE MULTI THREAD
MODELLING LANG RELATED APPS
MODELLING LANG RELATED APPS
ARE TREATED AS (PBA).
ARE TREATED AS (TBA).
***IN PBA CONTEXT SWITCHING IS
***IN TBA CONTEXT SWITCHING IS
MORE.
LESS.
****IN PBA EXECUTION TIME IS
****IN TBA EXECUTION TIME IS LESS.
MORE.
*****IN TBA,IRRESPECTIVE OF NO OF
*****IN PBA FOR EACH&EVERY SUBSUB-PROGRAM THERE EXISTS ONLY
PROGRAM THERE EXISTS A SEPARATE ONE ADDRESS SPACE.
ADDRESS SPACE.
******ALL THE TBA RE TREATED AS
******ALL THE PBA RE TREATED AS
LIGHT WEIGHT COMPONENTS.
HEAVY WEIGHT COMPONENTS.
*******TBA PROVIDES BOTH
*******PBA PROVIDES ONLY
CONCURRENT EXECUTION AND
SEQUENTIAL EXECUTION BUT NOT
SEQUENTIAL EXECUTION.
CONCURRENT.
DEFNITION OF ADDRESS SPACE:-IT IS AN AMOUNT OF TEMPORARY MEMORY
SPACE CREATED BY O.S ON STACK MEMORY FOR THE TEMPORARY
EXECUTION OF METHOD.
DEFNITION OF CONTEXT SWITCHING:-IT IS THE MECHANISM OF SWITCH THE
CPU FROM ONE ADRESS SPACE TO ANOTHER SPACE.
*A HEAVY WEIGHT COMPONENT ALWAYS TAKES MORE EXECUTION TIME .AND
LIGHT WEIGHT COMPONENT TAKES LESS EXECUTION TIME.
NOTE:*FOR THE BEST APPS DEVELOPMENT CONTEXT SWITCHING MUST BE
LESS.
**EACH & EVERY TBA IS ONE OF THE PBA IN WHICH THERE EXISTS ONE MAIN
PROCESS AND IT INTURNS CREATES NO OF SUB PROCESS.IN JAVA
PROGRAMMING MAIN PROCESS IS CALLED "THREAD GROUP NAME"AND SUB
PROCESS ARE CALLED "FOREGROUND THREADS" MEANT FOR EXECUTING
THE METHOD CONCURRENTLY.
Thread();
THIS CONSTRUCTOR IS USED FOR CREATING AN OBJECT OF THREAD CLASS
WITHOUT GIVING USER FRIENDLY NAME TO THE THREAD.IF WE CREATE NNUMBER OF OBJECTS WITH THIS CONSTRUCTOR THEN THEDEFAULT NAMES
OF THE THREAD STARTS WITH THREAD-0,THREAD-1....
GIVING THESE DEFAULT NAMES ARE NOT RECOMMEND TO GIVE USER
FRIENDLY NAMES TO THE THREAD
EG:- Thread t1=new Thread();
HERE T1 IS CALLED OBJECT/REFERRENCE VARIABLE AND WHOSE DDEFAULT
NAME IS "THREAD-0".
Thread(String);
Thread t!=new Thread("HARSHA");
THIS CONSTRUCTOR IS USED FOR CREATING AN OBJECT OF THREAD CLASS
BY TO GIVE USER FRIENDLY NAME TO THE THREAD.
Thread(Runnable);
Thread(Runnable,String);
INSTANCE METHODS:Public Final Void getName(String)
Public Final String getName()
THE ABOVE METHODS ARE USED FOR GETTING THE USER FRIENDLY NAME
TO THE THREAD AND GETTING THE NAME OF THE THREAD.
EG:-Thread t1=new Thread(0;
String tname=t1.getName();
sop(tname);//Thread -1
t1.getName("harsha");
tname=t1.getName();
sop(tname);//harsha
T1.Suspend();
*Public Final Void Resume();THIS METHOS IS USED TO TRANSFERING THE SUSPENDED THREADS FROM
WITING STATE TO READY STATE WHEN THE THREADS ARE
RESUMED(RESTARTED)THEN THEY CONTINOUSTHEIR EXECUTION WHERE
THEY LEFT OFF BEFORE THEIR SUSPENSION.
T1.Resume();
*Public Final Void Stop():
THIS METHOD IS USED FOR TERMINATING /STOPS THE EXECUTION OF THE
THREAD. WHEN WE RESTART THE STOPPER THREADS THEY START
CONTAINING THEIR EXECUTION FROM THE BEGGINING
Public Final Void Join();THROWS JAVA.LANG.INTERRUPTED EXCEPTION THEIR
COMPI=LETION OF EXECUTION AS A SINGLE AND HAND OVER TO THE
GARBAGE COLLECTOR
THIS PROCESS WILL IMPROVE THE EFFICIENCY OF MULTI THREADDING APPS
*THE DEFAULT ENVIRONMENT OF MULTI THREADING SAYS INDIVIDUALLY
COLLECTING THE THREADS AND INDIVIDUALLYHAND OVERING TO THE
GARBAGE COLLECTOR WHICH IS ONE OF THE TIME CONSUMING PROCESS.
Join()THROWS A PRE-DEFINED EXCEPTION CALLED
JAVA.LANG.INTERRUPTTEDEXCEPTION--IT IS ONE OF THE UNCHECKED
EXCEPTION
WHEN INTERRUPTED EXCEPTION OCCUR:LET US ASSUME 'N'NO OF THREADS ARE CREATED STARTED ALL OF THEM
UNDER EXECUTION,(N-1)THREADS ARE COMPLETED THEIR EXECUTION AND
JOINED AND STILL,Nth THREAD IS UNDER EXECUTION.DUE TO MAIN MEMORY
MANAGMENT OF O.S THREAD GROUPNAME IS ATTEMPTING TO COLLECT ALL
THE THREADS EVEN THOUGH Nth THREAD IS UNDER EXECUTION,AT THIS
TIME OF THREAD WITH RESPECT TO Nth THREAD JVM GENERATES A PRE
DEFINED EXCEPTION CALLED JAVA.LANG.INTERRUPTEDEXCEPTION.
EG:try
{
t1.join();
t2.join();
:
tn.join();
}catch(InterruptedException ie)
{
sop("problem in tread line");
}
STATIC METHODS:static methods of thread class must be access with class name
Public Static Final Thread CurrentThread():
it isone of the factory method and it is used for finding name of the threads
which are default by meaning in java execution environment
eg:Thread t=Thread.CurrentThread();
sop(t);//Thread[Main,5,Main]----->[fgt,priority,tgn)
t1.getName("harsha");
sop(t);//[harsha,5,Main]
Public Static Final Void Sleep(lang)throws java.lang.InterruptedException
this method is used for making the currently executing thread to sleep for
aperiod of time interms of MS.once the sleep time of the thread is over it will
be automatically transferred into ready&running states .once the thread is
sleeping further operations will not be performed until the sleep time is over.
WHEN INTERRUPTEDEXCEPTION OCCURS:it is one of the un checked
exception,let us assume first thread of the current program sleeping in one of
the location of main memorymanagement of O.S,the second thread of same
program attempting to sleep in the same location when the first thread is
sleeping,wrto that thread .jvm generates a re defined exception called
java.lang.InterruptedException
eg:
try
{
=======
thread.sleep(1000)
=======
}catch(InterruptedException ie)
{
sop('problem in thread exception");
}
write a jp which will print preliminary info abt thread such as name of the
threads which are default running,whose execution status,name of the
defined programmersthread whose execution status head priority modifier
value?
ans://thdemo1.java
class Thdemo1
{
Public Static Void main(String k[]){
thread t1=thread.Current Thread();
sop("default name="+t1)//thread(main,5,main)
boolean state=t1.isAlive();
sop("execution status of t1="+state);//tree
Thread t2=new Thread();
//new thread
}//run()
class thdemo1
{
psvm(String k[])
{
th1 t1=new th1();
sop("exe status of t1 before start="+t1.isAlive());
t1.start();
sop(exe status of t1 afterstart="+t1.is Alive());
try
{t1.join();
}catch(Interrupted Exception ie)
{
sop("pb in thread");
}
sop(exe status of t1 after com="+t1.isAlive())//false
}
}
THREAD SYNCHRONIZATION TECHNIQUES:we have 2 types of synchronizations techniques they are:---synchronized
instance method and synchronized static method.
SYNCHRONIZED INSTANCE METHOD:-when an ordinary instance method
accessed by multiple threads the we get inconsistent results.to avoid this
inconsistent result the defnition of ordinary instance method must be made
as synchronized.by using synchronized keyword
syn:-
}
as long as thread is executing,synchronised static method then jvm will lock
the corresponding class
class Account
{
private int bal=0;
synchronized static void deposit(int amt)
{
bal=bal+amt;
sop("current sal="+bal);
}
as long as thread is executing the above synchronized static deposit method
hen jvm will lock account class
*hence the concept of synchronization also provides thread safety results..