-
Notifications
You must be signed in to change notification settings - Fork 23
/
Copy pathsynchronization.java
61 lines (53 loc) · 1.48 KB
/
synchronization.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
// A Java program to demonstrate working of
// synchronized.
import java.io.*;
import java.util.*;
// A Class used to send a message
class Sender {
public void send(String msg) {
System.out.println("Sending\t" + msg);
try {
Thread.sleep(1000);
} catch (Exception e) {
System.out.println("Thread interrupted.");
}
System.out.println("\n" + msg + "Sent");
}
}
// Class for send a message using Threads
class ThreadedSend extends Thread {
private String msg;
Sender sender;
// Recieves a message object and a string
// message to be sent
ThreadedSend(String m, Sender obj) {
msg = m;
sender = obj;
}
public void run() {
// Only one thread can send a message
// at a time.
synchronized (sender) {
// synchronizing the snd object
sender.send(msg);
}
}
}
// Driver class
class synchronization {
public static void main(String args[]) {
Sender snd = new Sender();
ThreadedSend S1 = new ThreadedSend(" Hi ", snd);
ThreadedSend S2 = new ThreadedSend(" Bye ", snd);
// Start two threads of ThreadedSend type
S1.start();
S2.start();
// wait for threads to end
try {
S1.join();
S2.join();
} catch (Exception e) {
System.out.println("Interrupted");
}
}
}