Art class (Multi-threaded application)
Since there can be no class without a teacher, you need a teacher (main thread). When you get to class you sit down and the teacher accounts for everybody and assigns the class to paint pictures for the day.
The teacher assigns all the students for the day to start painting (thread initialization and assignment).
Because the school only has so many paints, everybody is going to have to share colors with each other (paints represent memory).
Lets say you're painting a dragon and you want to give it crazy red eyes but somebody else is using the red paint. You can't just go over and take the paint for yourself because then nobody else would be able to use it. Instead, what you do is you politely ask to share (resource locking) the paint. You use a little, then pass it along. You may have to wait a bit to get it back but it allows everybody who needs it to get some without a paint fight (race conditions).
At the end of the class the teacher dismisses the class (thread joining).
Gaming (Multi-process application)
Playing a card game with friends (or equivalent game with collectibles):
Lets say you get together with your friends (processes) after school. There are no teachers around to nobody is there to tell you what to do.
Everybody is gets together to play games (multi-process or multi-layered application).
You think hard about how you can use your cards to beat your opponents (internal processing) and you try to share ideas with your partner when you come up with an idea (message passing).
If you get really good you may join a club:
Leader (executive program)
If the club gets really good they may come up with a special way (API) to communicate with each other to help strategize better.
I chose not to mention multiple processors/cores here because the abstraction gets pretty complicated (and context switching is still transparent to most applications). I could probably start by saying that every team in the game represents a separate processor/core and most games still suck because they only allow a few teams to play together in a game. The future may look something more like an MMORPG where many people can play together in a game on many different teams.
Trying to develop a kids metaphor for a distributive processing system on a many core computer or many host network would be pretty interesting to play with but that's not what the Op asked for.
Message passing above is a reference to the many forms of communication that programs use to talk to each other. Like people, applications have many ways to talk to each other. Writing is like Piping serialized data, talking is like networking, whispering is like networking over an encrypted connection, databases are like a score card (finite structure with well defined data), and using MSMQ is like tapping morse code by bashing your head against a solid surface.
Most other forms of communication beyond that blur together too much for me to consider them indistinguishable.
If you've ever played an online game like Halo, the people who join groups (or become pro players) usually have a shortened language to give call outs to direct each other where the other team's players are and what they're using. It's really obnoxious if you don't know the call outs but it's surprisingly effective during game play.
It's interesting how, even though most people that live within a given culture speak a common language but within that culture people develop shorter succinct domain languages that are optimized to handle specific tasks. In computing I'd compare that to an API.