Skip to content

Commit 386786a

Browse files
committed
Removed synchronized keywords for better performance.
1 parent a116de3 commit 386786a

File tree

2 files changed

+32
-55
lines changed

2 files changed

+32
-55
lines changed

src/tinystruct/examples/smalltalk.java

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,9 @@ public talk index() {
7676
if(!session_ids.contains(sessionId))
7777
session_ids.add(sessionId);
7878

79-
synchronized (this.list) {
80-
if(!this.list.containsKey(sessionId))
81-
{
82-
this.list.put(sessionId, new ConcurrentLinkedQueue<Builder>());
83-
}
84-
this.list.notifyAll();
79+
if(!this.list.containsKey(sessionId))
80+
{
81+
this.list.put(sessionId, new ConcurrentLinkedQueue<Builder>());
8582
}
8683

8784
this.setVariable("meeting_code", meetingCode.toString());
@@ -304,13 +301,10 @@ public void sessionCreated(HttpSessionEvent arg0) {
304301
System.out.println("New meeting generated by HttpSessionListener:" + meetingCode);
305302
}
306303

307-
synchronized (this.list) {
308-
final String sessionId = arg0.getSession().getId();
309-
if(!this.list.containsKey(sessionId))
310-
{
311-
this.list.put(sessionId, new ConcurrentLinkedQueue<Builder>());
312-
}
313-
this.list.notifyAll();
304+
final String sessionId = arg0.getSession().getId();
305+
if(!this.list.containsKey(sessionId))
306+
{
307+
this.list.put(sessionId, new ConcurrentLinkedQueue<Builder>());
314308
}
315309
}
316310

@@ -327,25 +321,18 @@ public void sessionDestroyed(HttpSessionEvent arg0) {
327321

328322
Queue<Builder> messages;
329323
List<String> session_ids;
330-
synchronized (this.meetings) {
331-
if((session_ids = this.sessions.get(meetingCode)) != null) {
332-
session_ids.remove(arg0.getSession().getId());
333-
}
334-
335-
if ((messages = this.meetings.get(meetingCode)) != null) {
336-
messages.remove(meetingCode);
337-
}
324+
if((session_ids = this.sessions.get(meetingCode)) != null) {
325+
session_ids.remove(arg0.getSession().getId());
326+
}
338327

339-
this.meetings.notifyAll();
328+
if ((messages = this.meetings.get(meetingCode)) != null) {
329+
messages.remove(meetingCode);
340330
}
341331

342-
synchronized (this.list) {
343-
final String sessionId = arg0.getSession().getId();
344-
if(this.list.containsKey(sessionId))
345-
{
346-
this.list.remove(sessionId);
347-
}
348-
this.list.notifyAll();
332+
final String sessionId = arg0.getSession().getId();
333+
if(this.list.containsKey(sessionId))
334+
{
335+
this.list.remove(sessionId);
349336
}
350337
}
351338
}

src/tinystruct/examples/talk.java

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
public class talk extends AbstractApplication {
2727

28-
private static final long TIMEOUT = 10;
28+
private static final long TIMEOUT = 1;
2929
private static final int DEFAULT_POOL_SIZE = 3;
3030
protected static final int DEFAULT_MESSAGE_POOL_SIZE = 10;
3131
protected final Map<String, BlockingQueue<Builder>> meetings = new ConcurrentHashMap<String, BlockingQueue<Builder>>();
@@ -94,8 +94,7 @@ public String save(Object meetingCode, String sessionId, String message) {
9494
public final String save(final Object meetingCode, final Builder builder) {
9595
BlockingQueue<Builder> messages;
9696
if ((messages = this.meetings.get(meetingCode)) == null) {
97-
messages = new ArrayBlockingQueue<Builder>(DEFAULT_MESSAGE_POOL_SIZE);
98-
this.meetings.put(meetingCode.toString(), messages);
97+
this.meetings.put(meetingCode.toString(), messages = new ArrayBlockingQueue<Builder>(DEFAULT_MESSAGE_POOL_SIZE));
9998
}
10099

101100
try {
@@ -115,7 +114,6 @@ public void run() {
115114
e.printStackTrace();
116115
}
117116
} while(talk.this.meetings.get(meetingCode) == null || (message = talk.this.meetings.get(meetingCode).poll()) == null);
118-
119117
talk.this.copy(meetingCode, message);
120118
}
121119
});
@@ -135,19 +133,16 @@ private ExecutorService getService() {
135133
*/
136134
public final String update(final String sessionId) throws ApplicationException, IOException {
137135
Builder message;
138-
Queue<Builder> messages;
139-
synchronized (this.list) {
140-
messages = this.list.get(sessionId);
141-
while((message = messages.poll()) == null) {
142-
try {
143-
this.list.wait(TIMEOUT);
144-
} catch (InterruptedException e) {
145-
throw new ApplicationException(e.getMessage(), e);
146-
}
136+
Queue<Builder> messages = this.list.get(sessionId);
137+
while((message = messages.poll()) == null) {
138+
try {
139+
Thread.sleep(TIMEOUT);
140+
} catch (InterruptedException e) {
141+
throw new ApplicationException(e.getMessage(), e);
147142
}
148-
149-
return message.toString();
150143
}
144+
145+
return message.toString();
151146
}
152147

153148
/**
@@ -165,22 +160,17 @@ protected String filter(String text) {
165160
* @param builder
166161
*/
167162
private final void copy(Object meetingCode, Builder builder) {
168-
synchronized(this.list) {
169-
final Collection<Entry<String, Queue<Builder>>> set = list.entrySet();
163+
final Collection<Entry<String, Queue<Builder>>> set = this.list.entrySet();
170164
final Iterator<Entry<String, Queue<Builder>>> iterator = set.iterator();
171-
final List<String> meeting_session;
172-
if((meeting_session = this.sessions.get(meetingCode)) != null) {
165+
final List<String> _sessions;
166+
if((_sessions = this.sessions.get(meetingCode)) != null) {
173167
while(iterator.hasNext()) {
174-
Entry<String, Queue<Builder>> e = iterator.next();
175-
if(meeting_session.contains(e.getKey())) {
176-
e.getValue().add(builder);
177-
this.list.notifyAll();
168+
Entry<String, Queue<Builder>> list = iterator.next();
169+
if(_sessions.contains(list.getKey())) {
170+
list.getValue().add(builder);
178171
}
179172
}
180173
}
181-
else
182-
this.list.notifyAll();
183-
}
184174
}
185175

186176
@Override

0 commit comments

Comments
 (0)