Skip to main content

Creating Thread Using Runnable Interface ..... and also Synchronizing

As we know that there are two ways to create a thread:

1.      By extending Thread class
2.      By Runnable interface

Today we will discuss how to create a thread with the help of Runnable interface. Runnable is an interface which includes run() method, where we can implement our code as a Thread. To understand how the Runnable interface can be used, let us simplify the concept through an example:

class A
{
            public void run()
            {
                        for (int i = 1; i <= 5; i++)
                        {
                                    System.out.println(“From class A :” + i);
                        }
            }
}

class run
{
            public static void main (String args[])
            {
            A aobj = new A();
            Thread t1 = new Thread(aobj);
            t1.start();
            }
}

Output:




Explanation:

Runnable is an interface, so we need to inherit the method run() through implements keyword. After declaring this statement, run() method is now referred as the part of class A. run() is a method that is already declared in Runnable interface, just we have to redefine in class A and we can use all the facilities of run() method. Now, the main essential part is how to declare an object of the Runnable interface. To perform this task:

1.      First and foremost, create the object of class A as we have seen while extending the Thread class.
2.      Now to call run() method, we can’t call directly with the object of class A, so we have to create object of the Thread class and then we will assign that to object of the Thread class. Here, we have taken aobj as an object for A class and t1 for Thread class. It is same as

a = b
b = c

3.      Now we have finished the task of creating the objects, we can call the method by using t1.start() statement.



Synchronization

When two or more threads need to use shared resources at that time, they need some way to ensure that the resources will be used by only one thread at a time. This process is known as synchronization.

When the thread begins executing a synchronize method, it automatically acquires a lock on the object. A lock is automatically relinquished when the method is completed. Whenever a thread had completed its work of using synchronized method (or block of code), it will hand over the lock to the next thread that is ready to use the same resource.

For example, assume that the thread A must access Method1 before it can release Method2, but the thread B cannot release Method1 until it gets hold of Method2. Because these are mutually exclusive conditions, a deadlock occurs. The code below illustrates this:

Thread A
            synchronized method2()
            {
                        synchronized method1()
                        {
                        ……………………………..
                        ………………………………
                        }
            }

Thread B
            synchronized method1()
            {
                        synchronized method2()
                        {
                        ……………………………..
                        ………………………………
                        }
            }


 Made By: Chaudhary Amit V.

Comments

Popular posts from this blog

Characteristics of a Good Programming Language

Till now there are many high level languages which are very popular, and there are others, which could not become so popular in-spite of being very powerful. There might be many reasons for the success of a language, but one obvious reason is the characteristics of the language. Several characteristics believed to be important with respect to making a programming language good are briefly discussed below. Simplicity A good programming language must be simple and easy to learn and use. For example, BASIC is liked by many programmers only because of its simplicity. Thus, a good programming language should provide a programmer with a clear, simple and unified set of concepts which can be easily grasped. It is also easy to develop and implement a compiler or an interpreter for a programming language that is simple. However, the power needed for the language should not be sacrificed for simplicity. The overall simplicity of a programming language strongly affects the readability of the pr...

Angular 4 and Firebase Authentication: Setup

If you have come to this article, it means you are keen to learn new technology and that too Firebase. I love Firebase because it provides all basic but important features of any web application. Take for example, authentication, which is cumbersome and risky if not implemented with utmost care. And when we have the integration of Angular and Firebase, it becomes a lot easier for a developer to build such crucial modules in less time with minimal efforts. In this article we will create a simple Angular application using Firebase. I am going ahead with the understanding that you know the benefits of Firebase and have little knowledge about it. There are plenty of posts out on the web if you are behind. Step 1: Install Angular CLI (if not installed). npm install -g angular-cli Step 2: Create new Angular 4 project. By default now angular CLI will create Angular 4 project so you need not fret. ng new firebase-authentication Step 3: Check whether the ne...

Switch-case, simple calculator . . .

11.      Write a program to perform some mathematic functions with the help of “switch-case” statement. #include<stdio.h> #include<conio.h> void main() { int a,b,ans; char c; clrscr(); printf("\ Enter a and b:"); scanf("%d%d",&a,&b); printf("\n Enter operator:"); fflush(stdin); scanf("%c",&c); switch(c) { case'+':ans=a+b;       break; case'-':ans=a-b;       break; case'*':ans=a*b;       break; case'/':ans=a/b;       break; } printf("\n ans %d",ans); getch(); } 12.      Print the Fibonacci series #include<stdio.h> #include<conio.h> void main() { int a=1,b=1,s=3,c,ch; clrscr(); printf("how many steps="); scanf("%d",&ch); printf("%5d%5d",a,b); for(s=3;s<=ch;s++) {       c=a+b;       printf("%5d",c);       a=b;    ...