main page
1). Create a spring using the 'more' option in the primitives menu. I used 5, 8, 2 for Loops, Segments and Sections respectively here.
Note that the spring prim. doesn't produce n (5 here) 'complete' 360 degree helical sections - the last section is missing. If you need a specific number of turns, creat an extra turn, and chop off the unwanted chunk (use Edge | Loopcut, or Face | Dissolve)
2). Since stuff 'overlaps' am going to scale the wire diameter to make things a bit more sensible.
Select all 'spring wire' cross-section edgeloops. Highlight one edge section, press L (for whole loop), press G (for all loops)
3). Apply Edge | Scale -> Uniform and drag to suit - I used 60% here. This amount will vary depending on what thread 'shape' you're trying to achieve, etc.
(Since all of the edge selections are complete (and separate from) their neighbours, scaling will take place around each individual selection centre - if you want a laugh, change to vert mode and try scale again)
4). As I intend chopping off the inner chunk of the spring - and filling the 'hole' - have got to provide a suitable cutting path.
Select top and bottom verts on the 2 end faces as shown and press C to connect them.
5). Select the edgeloop / cutting path shown (highlight one edge, press L)
6). Separate the inner and outer parts of the spring - can either loopcut or dissolve - I used the latter route, so this pic shows the situation after pressing Shift + L  (this converts an edge loop to a region selection) - but prior to the dissolve (backspace) op.
(If the shift + L returns the 'wrong' bit - use invert selection to get the inner bit - wasn't needed in my case)
7). Situation after pressing backspace (dissolve) - one big face - keep selected.
LH pic used rotate (and Scale Y) edgeloop method
RH pic used cut N method on axial edges (and connect etc)
Threads from springs
The improvement to multiple connect handling (thx to DanG) made this approach worth a re-visit, imo.
(This method will eventually get added to aardvarks 'springs' page, btw, after some tidying up - time permitting
8). Press V to select all the verts on this face.
9). Press C to connect them - you've now got the basic cylinder shape with threads around it - just a bit of 'tidying up' needed. (various ways of going about this)
10). Select both sets of end faces (select one set, press I)
11). Press backspace (dissolve)
12). Face | Extrude -> Y
13). Situation after repeating the extrude op on the other end, selecting both end faces and applying Face | Flatten -> Normal.

If the 3 end faces dissolved in (10) are left untouched - and after the object is finished as shown in (13) you apply Edge | Bevel to the top of the thread - you'll end up with an object that is all quads.

As with any method for making threads - rather than springs - dealing with the gradual tapering off hasn't been mentioned - and can often pose interesting opportunities.