It looks like you are trying to do a Matrix style thing where you have random characters falling down the screen. You do not need multi-threading to accomplish this, and in fact, multi-threading would add a nightmarish amount of complexity for this simple task.
I think the problem is that you are thinking about this the wrong way. It looks to me like you mean for your code to draw one line all the way through, and then draw the next line all the way through, and then the third line all the way through. Thus your logical desire to multi-thread so that all three happen at the same time instead of one after the other.
As a quick style note, your indentation is inconsistent. The section from //sets background color down looks like a new function at a glance, and the indentation inside the while(lives != 0) loop is all almost aligned with each other, removing all benefits of indentation. Fixing that might make it easier for you to spot things in the code you've written, whether errors or opportunities to change things.
Instead of thinking in terms of each of the lines of characters being processed independantly, think instead of your loop as updating each line in turn until you are done. Here is pseudo-code to explain what I mean:
This will draw the top character of each line, wait half a second, and then appear to move each one down (changing it to a new random character) until all three have moved all the way down and "fall off" the screen.
determine random starting points for each line (x1,y1 , x2,y2 and x3,y3)
draw a random character at each of these starting points
perform the following loop while y1, y2 and y3 are still on the screen
delay for half a second
if y1 is above the bottom of the screen
erase the character at x1,y1
add 1 to y1
if y1 is still above the bottom of the screen
then draw a new random character at x1,y1
if y2 is above the bottom of the screen
erase the character at x2,y2
add 1 to y2
if y2 is still above the bottom of the screen
then draw a new random character at x2,y2
if y3 is above the bottom of the screen
erase the character at x3,y3
add 1 to y3
if y3 is still above the bottom of the screen
then draw a new random character at x3,y3
Instead of using x1,y1, x2,y2 and x3,y3 you could use an array of structs, which would allow you to easily add additional lines, but I would suggest getting this working first to help you wrap your head around the idea.