GMSThreadException occur when displaying GMSMarkers on iOS Simulator

Google Maps iOA SDK requires that all drawing events be done on the main thread.

So, for your second method, you have to do put all your maker setup code inside the dispatch_get_main_queue() closure.

So your method 2 will be:

func Method2() {
    dispatch_async(dispatch_get_global_queue(Int(QOS_CLASS_USER_INITIATED.value), 0)) {
        for location in locationsArrayFromSomeWhere {

            dispatch_async(dispatch_get_main_queue()) {
                let placeMarker = PlaceMarker(coordinate: location.coordinate)
                .
                .//Simple Setup
                .
                placeMarker.map = self.mapView
            }
        }
    }
}

Swift 3.0

dispatch_async(dispatch_get_main_queue()) 

has been renamed to

DispatchQueue.main.async