addressalign-toparrow-leftarrow-rightbackbellblockcalendarcameraccwcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-checkcircle-with-crosscircle-with-pluscontroller-playcrossdots-three-verticaleditemptyheartexporteye-with-lineeyefacebookfolderfullheartglobegmailgooglegroupshelp-with-circleimageimagesinstagramFill 1light-bulblinklocation-pinm-swarmSearchmailmessagesminusmoremuplabelShape 3 + Rectangle 1ShapeoutlookpersonJoin Group on CardStartprice-ribbonprintShapeShapeShapeShapeImported LayersImported LayersImported Layersshieldstartickettrashtriangle-downtriangle-uptwitteruserwarningyahoo

Re: [ljc] Concurrency, multi-threaded programming: under the hood

From: Sean L.
Sent on: Saturday, March 16, 2013 7:01 PM
Hi Barry,

I've had at least half if not most of every technical stage interviews devoted to concurrency/multi-threading (including my current role), even though that vast majority of roles will make little to no direct use of the java.util.concurrency packages (the project might be a glorified web-based data capture application for example).

Companies nearly always focus on this (which is an important part of development, but not the only part) despite the fact that they a) dont use it currently b) are unlikely to use it anytime soon c) if they do have performance related issues they're almost always down to poor implementation & design, something that is unlikely to be improved upon by adding concurrency to the mix. 

In at least two recent roles I've found that the problems to solve werent actually down to multi-threading - they were down to misuse of a database, inefficient algorithm for a particular problem and so on. Only once have I had to actually fix a concurrency problem and that was down to a bug in a third-party package. 

I think that companies hiring developers should first ask themselves if they focusing of topics relevant to what they actually do, as opposed to what they like to believe they're doing. I've been on the interviewer side of things often and I've often had to argue the case for a candidate who I thought was a good developer (i.e solid understanding of patterns/algorithms etc - the "basics", good clear though process, good comms, good team fit) but didn't necessary know the answer to an esoteric multi-threading question. In other words we would be willing to turn down a candidate that ticked every box that (in my opinion) that counted but didn't have knowledge in something that wasn't relevant to the actual role being filled.


All that said, and as this isnt actually answering your question, I've found the best way to learn this sort of thing is to read the de-facto standard books on these topics (Java Concurrency in Practice for example) and then practice practice practice.  The very best way to truly "get" concurrency is by writing lots of code and by experimenting, following up on forums/friends/colleagues with parts you're unsure about.

Deep dives would help enrich this process, but I found actual development more useful to me learning about it than passive engagement. Getting involved with OSS is a great way to do this too, but again it really depends on the project - not every project (not unreasonably) does heavy multi-threading.



From: Barry Cranford <[address removed]>
To: [address removed]
Sent: Saturday, 16 March 2013, 14:36
Subject: [ljc] Concurrency, multi-threaded programming: under the hood

Hi all,

We are often tasked to find Java developers with an understanding of low level core Java. Not necessarily specialist contractors at 5-600 pday, but permanent developers, one may classify as mid-senior level (40-60k). When pushed this is often defined by developers that understand what is going on 'under the hood' e.g. not just how to use popular frameworks but those that understand the concepts and principles beneath them. Whilst some companies will be a little more easy on practical experience, they will push for an understanding. 

Many developers don't make it through interview processes with feedback coming up time and again around a lack of understanding of multi threaded programming and concurrency. I have seen a few conversations recently on the list around these areas so I'm keen to understand the thoughts of the community on this. 

A few things I'm curious about...

- If we could put on some deep dive talks what subjects would you personally most like to have covered?
- Why are some developers drawn to this deeper level and why do some people seem to grasp these concepts so easily against others? 
- If you could offer advice to students starting out in Java development today, how would you suggest learning the fundamentals of these concepts? (reading, self study, projects, talks, oss, something else)?
- Have you been through this learning process in the past and had a eureka moment? What happened for you personally.

If you have any opinions on any of the above please feel free to reply to me personally at [address removed] or through the list. 

Enjoy your weekend!

Kind regards,
Barry | [address removed] | LinkedIn | Skype barrycranford | [masked] [masked] |
| Office +44 20 [masked] |  Fax: [masked] | 

For all our latest jobs, visit

RecWorks Ltd  |  Registered in England and Wales. Registered No. [masked] 

Email disclaimer: This email contains information which may be confidential. It is for the exclusive use of the intended recipient(s). If you are not the intended recipient(s) do not copy this communication, or disclose it to any other person. If you have received this email in error please notify the sender immediately, delete the message from your computer system and destroy any copies.  Except where this email is sent in the usual course of our business, any views or opinions presented are solely those of the author and do not necessarily represent those of RecWorks Ltd. Although RecWorks Ltd operates anti-virus programs, it does not accept responsibility for any damage whatsoever that is caused by viruses being passed. Replies to this email may be monitored and/or recorded by RecWorks Ltd for operational or business reasons.

Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
This message was sent by Barry Cranford ([address removed]) from LJC - London Java Community.
To learn more about Barry Cranford, visit his/her member profile
Set my mailing list to email me As they are sent | In one daily email | Don't send me mailing list messages

Meetup, POB 4668 #37895 NY NY USA 10163 | [address removed]

Our Sponsors

  • Our Blog

    Read the latest news from the LJC

  • RecWorks Ltd

    Fixing Tech Recruitment using the Power of Community

  • jClarity

    Java/JVM Performance Analysis Tools & mentoring for Java related matters

  • LJC Aggrity

    Our LJC Aggrity site contains blog posts from our members

  • LJC Book Club

    Our Book club with book reviews from our members

  • Devoxx UK

    Java Community Conference in collaboration with the LJC, 8-10th June 16

  • SkillsMatter

    "Host, help organise, promote, film many of our meetings."

  • IBM

    Build Enterprise-grade apps at start-up speed.

  • New Relic

    New Relic makes sense of billions of metrics a day in real time.

  • Hazelcast

    Hazelcast is the leader in operating in-memory computing.

  • Java.Net

    We are an official Java User Group recognised by Oracle's JUG program

  • JRebel

    Free 3 month J-Rebel license.

  • O'Reilly

    40% discount on printed books and 50% on e-books.

People in this
Meetup are also in:

Sign up

Meetup members, Log in

By clicking "Sign up" or "Sign up using Facebook", you confirm that you accept our Terms of Service & Privacy Policy