align-toparrow-leftarrow-rightbackbellblockcalendarcamerachatcheckchevron-downchevron-leftchevron-rightchevron-small-downchevron-small-leftchevron-small-rightchevron-small-upchevron-upcircle-with-crosscrosseditfacebookglobegoogleimagesinstagramlocation-pinmagnifying-glassmailmoremuplabelShape 3 + Rectangle 1outlookpersonplusImported LayersImported LayersImported Layersshieldstartwitteryahoo

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

From: Mani
Sent on: Saturday, March 16, 2013 6:33 PM

I'll my few cents of what I think can also help which I have been doing recently. And this might be a bit outside the scope of your query but does overlap with what you asked and others have said so far.

1) read as much as you can on a subject in this case concurrency & multi-threading
2) don't embark into writing code yet till you feel you have grasped the subject
3) this does not mean don't write any code yet - do the practise exercises and illustrations in the book (whilst reading the book or online material)
4) then revisit the best practises or solutions to commonly known issues pointed out by the authors and make your own notes
5) Now start getting familiar with a project open-source or anything else that involves for e.g. multi-threading & concurrency! You will soon start seeing all the patterns that you have read and made notes on. And might be able to make a comment or two on if the authors of the code have been following best practices on the subject.
6) Find out about libraries, frameworks, open-source projects that recognise the issues and are doing something to resolve it - read their documentation, white-papers, wikis! Also see code implemented by using these new solutions.
7) Highly effective: join mailing lists of such topics - even if you don't follow any conversation, the human mind is such after reading messages with common themes, after a while will put two-and-two together and at a eureka moment "Aah! That's what was meant in thread x, y months ago! Now I follow!" There's often discussions on code snippets on such forums!
8) Ask questions like how does this work internally, how is it laid out in memory? In the world of java/jvm - what does the byte-code look like?

I have applied some of these steps while trying to understand concurrency / multithreading and few other topics and saw it paying off!

The benefit of this is like looking at a Venn-diagram - that's how 'know-how' of a subject gets laid out in your memory, concentrated union by repetition and the extra bits in the exclusion area!

Failing at interviews isn't a bad thing, because with each failure you learn to pick up the topics you weren't strong at - and then add it to your list.

I hope it answers your initial query partly if not fully.


Twitter: @theNeomatrix369
JUG activity: LJC Advocate  (@adoptopenjdk & @adoptajsr programs)

From: [address removed]
To: [address removed]
Subject: Re: [ljc] Concurrency, multi-threaded programming: under the hood
Date: Sat, 16 Mar[masked]:14:54 -0400

Hi Barry, 

Interestingly enough, if I am talking to a company that continually stresses the need for concurrency skills, then it is actually a little bit of a red-light. That depends a bit on the company, because some people are solving problems where concurrency is a fundamental part of the problem, where it is not, a major focus on this as a topic actually screams something like, "We are in a real mess, we have built this system, hadn't considered multi-user testing, now discovered that it doesn't scale, and have decided to try to throw hardware at the problem!". 

That probably isn't all that helpful, so I will try to improve upon that...

In my view, a *good* answer to the, "how well do you know Java concurrency?" question is this...

"I am familiar with the java.util.concurrent classes, and I have read 'Java concurrency in practice', generally though, I find that if you maintain good design fundamentals, lean strongly towards immutability, which is a practice that has other advantages too, and isolate concurrency management in specific areas so that the vast majority of the code-base can be written without reference to concurrency techniques, then concurrency problems becomes far easier to solve. Writing custom concurrency code is a difficult and time-consuming task, and the cost of ownership of concurrency management code is much higher so it is also important to make sure other techniques are considered, with the requirements in mind, of course"

It can also be the case that, when people talk about concurrency they are really referring to problems like transaction isolation and database locking, which is a much more complicated topic in my opinion. They may also have other performance tuning techniques in mind. What might be being said here is, "We have found ourselves in a bit of a mess (which may or may not be self-inflicted), to get out of it, what we really need is a highly experienced and expensive software architect, but getting funding for that would require us to admit our problems, so we are trying to disguise this hire in the form of simply expanding the development team". This problem, I don't really know how to solve.... 

I know that some of that sounds pretty cynical, and I am quite open to be told, "You are wrong! That's not how it works at all!!", but I have this little feeling that some of my developer friends reading this might just be nodding along in silent agreement, and excessive honesty can be a flaw of mine at times ;)

For your purposes, if you have a candidate going for a role that has concurrency as a top level requirement, ask them if they have read, "Java concurrency in practice", and if they have not, advise strongly that they do, since it should give them the tools to answer some of the more tricky questions, and then.... pray for them ;)


On Sat, Mar 16, 2013 at 2:36 PM, Barry Cranford <[address removed]> wrote:
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] |
| Office [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]

Please Note: If you hit "REPLY", your message will be sent to everyone on this mailing list ([address removed])
This message was sent by Wesley Hall ([address removed]) from LJC - London Java Community.
To learn more about Wesley Hall, 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.

  • Craft Rebellion

    Your choice of fresh craft beer, delivered. For 10% off use ‘LJC'

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