package com.bugsnag;

import java.util.Date;

class Session {

    private final String id;
    private final Date startedAt;

    private int handledCount;
    private int unhandledCount;

    Session(String id, Date startedAt) {
        this.id = id;
        this.startedAt = new Date(startedAt.getTime());
    }

    synchronized int getHandledCount() {
        return handledCount;
    }

    synchronized void incrementHandledCount() {
        this.handledCount++;
    }

    synchronized int getUnhandledCount() {
        return unhandledCount;
    }

    synchronized void incrementUnhandledCount() {
        this.unhandledCount++;
    }

    String getId() {
        return id;
    }

    Date getStartedAt() {
        return new Date(startedAt.getTime());
    }
}

@@ -37,16 +37,66 @@
 il.Date;
+%0Aimport java.util.concurrent.atomic.AtomicInteger;
 %0A%0Aclass 
@@ -169,17 +169,16 @@
 rtedAt;%0A
-%0A
     priv
@@ -181,19 +181,35 @@
 private 
+f
 in
-t
+al AtomicInteger
  handled
@@ -227,19 +227,35 @@
 private 
+f
 in
-t
+al AtomicInteger
  unhandl
@@ -387,35 +387,124 @@
 ));%0A    
-%7D%0A%0A    synchronized
+    this.handledCount = new AtomicInteger(0);%0A        this.unhandledCount = new AtomicInteger(0);%0A    %7D%0A%0A   
  int get
@@ -539,32 +539,38 @@
 urn handledCount
+.get()
 ;%0A    %7D%0A%0A    syn
@@ -562,37 +562,24 @@
 %0A    %7D%0A%0A    
-synchronized 
 void increme
@@ -626,35 +626,38 @@
 ount
-++;%0A    %7D%0A%0A    synchronized
+.incrementAndGet();%0A    %7D%0A%0A   
  int
@@ -704,24 +704,30 @@
 handledCount
+.get()
 ;%0A    %7D%0A%0A   
@@ -731,21 +731,8 @@
     
-synchronized 
 void
@@ -791,10 +791,26 @@
 ount
-++
+.incrementAndGet()
 ;%0A  

use atomic integer to count session handled count