Skip to main content

Introduction to Threads in Java

 Threads are basically a way to run multiple tasks concurrently this can be helpful to speed up your program, usually, a Java program runs on a single thread by utilizing only one core of your processor here the other processors are just sitting idly by introducing thread java helps us to make use of these idle processors. 

How to create a new thread process?

There are two ways of creating a new thread is by extending the Thread class and another way is by implementing Runnable interface either way the class must override the run method which will be called during the start method of the thread object. 

1. extending the Thread class 

public class Main extends Thread {
public void run() {
System.out.println("This code is running in a thread");
}
}

2.  Implementing Runnable Interface

public class Main implements Runnable {
public void run() {
System.out.println("This code is running in a thread");
}
}

The ideal way would be by implementing the Runnable interface because this enables us to extend other required base classes if required, here the method run() will be called after the thread is started, here you may call the methods which you wan to sublet or do any required process inside it, please note the run() which does returns nothing. 


Creating a thread Object.

    Creation of Thread object is same as creating any other object, Thread <name> = new Thread(<Object>) here a thread object will be created, now we can access the methods of the Thread class.

public class Main extends Thread {
public static void main(String[] args) {
Main thread = new Main();
}

public void run() {
System.out.println("This code is running in a thread");
}
}

How to start the thread ?

The thread can be called by calling start method which is available in the thread class, for example ThreadName.start() here when the start method is called the process will start and eventually it will automatically call the run method and the thread will become active and start processing the methods insde the run method.

public class Main extends Thread {
public static void main(String[] args) {
Main thread = new Main();
thread.start();
System.out.println("This code is outside of the thread");
}
public void run() {
System.out.println("This code is running in a thread");
}
}

LifeCycle of Thread

A thread exists only in any one of these state at a time, lets look at them one by one.

  • New

    as the same specifies this is a new state where the thread object is createes,but none of the code inside it not yet started to implement.

  • Runnable

    At this point the code inside this block is ready to run at any instant, once the thread scedualers flags greem the code inside it will start to implement one by one until there is any aburption.

  • Blocked
  • Waiting
  • Timed Waiting
  • Terminated

Comments

Popular posts from this blog

Designer PDF Viewer - HackerRank Problems

Difficulty: EASY Problem : The objective here is to find the size of the highlighted area, and we are given the size's of all the alphabets, we have to find the largest alphabet in the highlighted word and then calculate the size of the rectangle so if the tallest character is 3 then the size of the box will be 3 * number of characters given. Visual representation of the selection : abc def ghij Inputs An array with the sizes of all alphabets a-z in order. A String of highlighted words. Important points to note The array which holds the height of each character in ascending order which means the arrays 0th index will have the height of a 1st index will have the height of b and so on and so forth in the end the hight of z will be there so it's easy to locate each character. A String with the highlighted word. This means we have got the characters inside the rectangle, all we have to find is ...

Literals of Base numbers in Java ( Octal , Hexadecimal, Decimal)

1. Overview: A literal key indicates the compiler how to interpret the value of the given data type, for numbers we can calculate the value by using Octal representation or hexadecimal representation but just typing out a hexadecimal value to an int will throw us an error because the compiler has no idea how to handle it but if we assign the java specified prefix for the required bases with some literals then the compiler will not throw us any error as it understands how to interpret the value.  Base Litrals Values Example Eg. Value Decimal none 0-9 int x = 10; x is 10 Octal 0 (zero) as the prefix 0-7 int x = 12; x is 10 Hexadecimal 0x or (zero) along with an x 0-9 and a-f or A-F int x = 0XA; x is 10 Binary or Base(2) Allowed Digits 0 and 1 int i = 10; and now the variable i has value 10. i...

Array List - Collections Framework in Java - DSA

Gist: An array list can store individual objects by following insertion order, here the initial capacity is 10 by default but can be modified as per the requirement, once the array list reaches its load factor then internal all the elements of the current array is copied to a new array with the new capacity and the reference variable will now be referring to this new array list and the old array will be dealt by the garbage collector. Hierarchical order Type of constructors Empty argument constructor or the default constructor is the same as invoking any other object here a new ArrayList is created with a default size of 10. Below is the most commonly used constructor by beginners and others alike. ArrayList array = new ArrayList(); //array has a capacity of 10 The default constructor above will allot only 10 slots but if you want the initial size to be 20 or 1000 you can do so with the following constructor this is ideal w...