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

Basics of Room Persistence Library in Android #RP1

Room is a library built on top of SQLite that provides a more convenient and structured way to manage your app's local database. It lets you work with your data as Kotlin objects (data classes) instead of manually formulating them using SQL queries, which itself is a tedious task prone to many errors.   It also simplifies interactions with the database with many great features like validating the queries, seamless integration with Kotlin Flow, paging, LiveData, and many more. These features make Room the most preferred option for offline-first apps, as it expedites the process and helps us to avoid issues early in the development cycle. Since Google has the best article for setting up, I will be skipping the setup Dependency setup: Official Guide on Setting up Room Dependencies and plugins   Please do ensure you follow the above guide and then sync and build your project successfully, as it will help you to try out the components yourself. In t...

Implementing In-app and pre-locale language selection in Android

Modern Android App Architecture One of the essential features for a globalized app is the ability to provide users with the option to choose their preferred language within the application. In this blog post, we will guide you through the process of implementing in-app language selection in an Android app. Step 1: Create Locale String Resource Create a string resource file for each respective locale by navigating to res > new > Android Resource File . Select Locale and create a string.xml file. Copy and paste the translations of your app content into these files. Step 2: Configure Locale Preferences In the res/xml folder, create a new file called locales_config.xml and specify the locales of your choice. for example look at the following code: <?xml version="1.0" encoding="utf-8"?> <locale-config xmlns:android="http://schemas.android.com/apk/res/android"> <locale andro...

Search Textfield with options and clear button ideal for app TopBar- Jetpack Compose Component

In this blog post, we'll explore a simple yet effective implementation of a search bar in Jetpack Compose. The provided SearchTextField composable offers a basic text field with a placeholder, suitable for building the app top bar. Screen Shot of the Component from my Jot-app The following code can be used to your project directly and it should work as expected, the idea was to have a search bar for a top app which can also hst the buttons on either ends,do check the code below If you have any suggestions or improvements for the code, let's have a conversation below. Your feedback is valuable to me