Made a subtle change to the queue read loop in the threaded class run method:
instead of checking for the queue's being empty (which would exit immediately,
explaining the prior run stacktrace), went back to defining it as 'while True',
as per the IBM example, so that a get() on the empty queue will trigger it
instead.