Here in the below example, the threads t1 and t2 are accessing the common resource "Counter" without the "synchronized" keyword. Even then the output is coming sequential because of join.
It means that t2 will wait till t1 gets die.
public class Counter implements Runnable {
private static int count = 0;
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(count++ + Thread.currentThread().getName());
}
}
}
public class JoinImpl {
public static void main(String[] args) throws InterruptedException{
Counter counter = new Counter();
Thread t1 = new Thread(counter);
Thread t2 = new Thread(counter);
t1.start();
t1.join();
t2.start();
}
}
---------------------------------
output
--------------------------------
0Thread-0
1Thread-0
2Thread-0
3Thread-0
4Thread-0
5Thread-0
6Thread-0
7Thread-0
8Thread-0
9Thread-0
10Thread-0
11Thread-0
12Thread-0
13Thread-0
14Thread-0
15Thread-0
16Thread-0
17Thread-0
18Thread-0
19Thread-0
20Thread-0
21Thread-0
22Thread-0
23Thread-0
24Thread-0
25Thread-0
26Thread-0
27Thread-0
28Thread-0
29Thread-0
30Thread-0
31Thread-0
32Thread-0
33Thread-0
34Thread-0
35Thread-0
36Thread-0
37Thread-0
38Thread-0
39Thread-0
40Thread-0
41Thread-0
42Thread-0
43Thread-0
44Thread-0
45Thread-0
46Thread-0
47Thread-0
48Thread-0
49Thread-0
50Thread-1
51Thread-1
52Thread-1
53Thread-1
54Thread-1
55Thread-1
56Thread-1
57Thread-1
58Thread-1
59Thread-1
60Thread-1
61Thread-1
62Thread-1
63Thread-1
64Thread-1
65Thread-1
66Thread-1
67Thread-1
68Thread-1
69Thread-1
70Thread-1
71Thread-1
72Thread-1
73Thread-1
74Thread-1
75Thread-1
76Thread-1
77Thread-1
78Thread-1
79Thread-1
80Thread-1
81Thread-1
82Thread-1
83Thread-1
84Thread-1
85Thread-1
86Thread-1
87Thread-1
88Thread-1
89Thread-1
90Thread-1
91Thread-1
92Thread-1
93Thread-1
94Thread-1
95Thread-1
96Thread-1
97Thread-1
98Thread-1
99Thread-1
It means that t2 will wait till t1 gets die.
public class Counter implements Runnable {
private static int count = 0;
@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println(count++ + Thread.currentThread().getName());
}
}
}
public class JoinImpl {
public static void main(String[] args) throws InterruptedException{
Counter counter = new Counter();
Thread t1 = new Thread(counter);
Thread t2 = new Thread(counter);
t1.start();
t1.join();
t2.start();
}
}
---------------------------------
output
--------------------------------
0Thread-0
1Thread-0
2Thread-0
3Thread-0
4Thread-0
5Thread-0
6Thread-0
7Thread-0
8Thread-0
9Thread-0
10Thread-0
11Thread-0
12Thread-0
13Thread-0
14Thread-0
15Thread-0
16Thread-0
17Thread-0
18Thread-0
19Thread-0
20Thread-0
21Thread-0
22Thread-0
23Thread-0
24Thread-0
25Thread-0
26Thread-0
27Thread-0
28Thread-0
29Thread-0
30Thread-0
31Thread-0
32Thread-0
33Thread-0
34Thread-0
35Thread-0
36Thread-0
37Thread-0
38Thread-0
39Thread-0
40Thread-0
41Thread-0
42Thread-0
43Thread-0
44Thread-0
45Thread-0
46Thread-0
47Thread-0
48Thread-0
49Thread-0
50Thread-1
51Thread-1
52Thread-1
53Thread-1
54Thread-1
55Thread-1
56Thread-1
57Thread-1
58Thread-1
59Thread-1
60Thread-1
61Thread-1
62Thread-1
63Thread-1
64Thread-1
65Thread-1
66Thread-1
67Thread-1
68Thread-1
69Thread-1
70Thread-1
71Thread-1
72Thread-1
73Thread-1
74Thread-1
75Thread-1
76Thread-1
77Thread-1
78Thread-1
79Thread-1
80Thread-1
81Thread-1
82Thread-1
83Thread-1
84Thread-1
85Thread-1
86Thread-1
87Thread-1
88Thread-1
89Thread-1
90Thread-1
91Thread-1
92Thread-1
93Thread-1
94Thread-1
95Thread-1
96Thread-1
97Thread-1
98Thread-1
99Thread-1
No comments:
Post a Comment