Un-Synchronized Threads means that the threads are running independently without gaining a "lock" on the shared resource.
In the below example the threads(t1,t2) both are accessing the common shared resource simultaneously and increasing the shared variable "count" in a random order rather than one by one( i.e. count getting increase from 0 to 49 by t1 and then count getting increase from 50 to 99 by t2). Here, count is getting increase to 14 by "Thread-0" and then count is getting increase to 15 by "Thread-1".
public class Resource implements Runnable {
private static int count=0;
@Override
public void run() {
try {
Thread.sleep(1000);
for (int i = 0; i < 50; i++) {
System.out.println("count="+count+++"--->"+Thread.currentThread().getName());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Process {
public static void main(String[] args){
Resource sharedResource = new Resource();
Thread t1 = new Thread(sharedResource);
Thread t2 = new Thread(sharedResource );
t1.start();
t2.start();
}
}
----------------------------------------
output
----------------------------------------
count=0--->Thread-1
count=1--->Thread-0
count=2--->Thread-0
count=3--->Thread-0
count=4--->Thread-0
count=5--->Thread-0
count=6--->Thread-0
count=7--->Thread-0
count=8--->Thread-0
count=9--->Thread-0
count=10--->Thread-0
count=11--->Thread-0
count=13--->Thread-0
count=14--->Thread-0
count=12--->Thread-1
count=16--->Thread-1
count=15--->Thread-0
count=18--->Thread-0
count=19--->Thread-0
count=17--->Thread-1
count=21--->Thread-1
count=22--->Thread-1
count=20--->Thread-0
count=24--->Thread-0
count=23--->Thread-1
count=26--->Thread-1
count=27--->Thread-1
count=28--->Thread-1
count=29--->Thread-1
count=30--->Thread-1
count=31--->Thread-1
count=32--->Thread-1
count=33--->Thread-1
count=34--->Thread-1
count=35--->Thread-1
count=36--->Thread-1
count=37--->Thread-1
count=38--->Thread-1
count=39--->Thread-1
count=40--->Thread-1
count=41--->Thread-1
count=42--->Thread-1
count=43--->Thread-1
count=44--->Thread-1
count=45--->Thread-1
count=46--->Thread-1
count=47--->Thread-1
count=48--->Thread-1
count=49--->Thread-1
count=50--->Thread-1
count=51--->Thread-1
count=52--->Thread-1
count=53--->Thread-1
count=54--->Thread-1
count=55--->Thread-1
count=56--->Thread-1
count=57--->Thread-1
count=58--->Thread-1
count=59--->Thread-1
count=60--->Thread-1
count=61--->Thread-1
count=62--->Thread-1
count=63--->Thread-1
count=64--->Thread-1
count=65--->Thread-1
count=66--->Thread-1
count=67--->Thread-1
count=68--->Thread-1
count=25--->Thread-0
count=69--->Thread-0
count=70--->Thread-0
count=71--->Thread-0
count=72--->Thread-0
count=73--->Thread-0
count=74--->Thread-0
count=75--->Thread-0
count=76--->Thread-0
count=77--->Thread-0
count=78--->Thread-0
count=79--->Thread-0
count=80--->Thread-0
count=81--->Thread-0
count=82--->Thread-0
count=83--->Thread-0
count=84--->Thread-0
count=85--->Thread-0
count=86--->Thread-0
count=87--->Thread-0
count=88--->Thread-0
count=89--->Thread-0
count=90--->Thread-0
count=91--->Thread-0
count=92--->Thread-0
count=93--->Thread-0
count=94--->Thread-0
count=95--->Thread-0
count=96--->Thread-0
count=97--->Thread-0
count=98--->Thread-0
count=99--->Thread-0
In the below example the threads(t1,t2) both are accessing the common shared resource simultaneously and increasing the shared variable "count" in a random order rather than one by one( i.e. count getting increase from 0 to 49 by t1 and then count getting increase from 50 to 99 by t2). Here, count is getting increase to 14 by "Thread-0" and then count is getting increase to 15 by "Thread-1".
public class Resource implements Runnable {
private static int count=0;
@Override
public void run() {
try {
Thread.sleep(1000);
for (int i = 0; i < 50; i++) {
System.out.println("count="+count+++"--->"+Thread.currentThread().getName());
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class Process {
public static void main(String[] args){
Resource sharedResource = new Resource();
Thread t1 = new Thread(sharedResource);
Thread t2 = new Thread(sharedResource );
t1.start();
t2.start();
}
}
----------------------------------------
output
----------------------------------------
count=0--->Thread-1
count=1--->Thread-0
count=2--->Thread-0
count=3--->Thread-0
count=4--->Thread-0
count=5--->Thread-0
count=6--->Thread-0
count=7--->Thread-0
count=8--->Thread-0
count=9--->Thread-0
count=10--->Thread-0
count=11--->Thread-0
count=13--->Thread-0
count=14--->Thread-0
count=12--->Thread-1
count=16--->Thread-1
count=15--->Thread-0
count=18--->Thread-0
count=19--->Thread-0
count=17--->Thread-1
count=21--->Thread-1
count=22--->Thread-1
count=20--->Thread-0
count=24--->Thread-0
count=23--->Thread-1
count=26--->Thread-1
count=27--->Thread-1
count=28--->Thread-1
count=29--->Thread-1
count=30--->Thread-1
count=31--->Thread-1
count=32--->Thread-1
count=33--->Thread-1
count=34--->Thread-1
count=35--->Thread-1
count=36--->Thread-1
count=37--->Thread-1
count=38--->Thread-1
count=39--->Thread-1
count=40--->Thread-1
count=41--->Thread-1
count=42--->Thread-1
count=43--->Thread-1
count=44--->Thread-1
count=45--->Thread-1
count=46--->Thread-1
count=47--->Thread-1
count=48--->Thread-1
count=49--->Thread-1
count=50--->Thread-1
count=51--->Thread-1
count=52--->Thread-1
count=53--->Thread-1
count=54--->Thread-1
count=55--->Thread-1
count=56--->Thread-1
count=57--->Thread-1
count=58--->Thread-1
count=59--->Thread-1
count=60--->Thread-1
count=61--->Thread-1
count=62--->Thread-1
count=63--->Thread-1
count=64--->Thread-1
count=65--->Thread-1
count=66--->Thread-1
count=67--->Thread-1
count=68--->Thread-1
count=25--->Thread-0
count=69--->Thread-0
count=70--->Thread-0
count=71--->Thread-0
count=72--->Thread-0
count=73--->Thread-0
count=74--->Thread-0
count=75--->Thread-0
count=76--->Thread-0
count=77--->Thread-0
count=78--->Thread-0
count=79--->Thread-0
count=80--->Thread-0
count=81--->Thread-0
count=82--->Thread-0
count=83--->Thread-0
count=84--->Thread-0
count=85--->Thread-0
count=86--->Thread-0
count=87--->Thread-0
count=88--->Thread-0
count=89--->Thread-0
count=90--->Thread-0
count=91--->Thread-0
count=92--->Thread-0
count=93--->Thread-0
count=94--->Thread-0
count=95--->Thread-0
count=96--->Thread-0
count=97--->Thread-0
count=98--->Thread-0
count=99--->Thread-0
No comments:
Post a Comment