threadID and threadIdx.x,y,z are not the same thing.
threadID is a unique, scalar number that identifies each thread uniquely in a threadblock regardless of whather that threadblock is 1,2, or 3 dimensional. From a programming perspective, threadID is rarely important.
threadIdx.x,y,z are built-in variables provided by the runtime environment. Any computation of an “index” from those variables can take almost any form. There is no predefined connection between such a computed “index” which may have any relationship to the underlying threadblock structure, and threadID which has a specific, predfined, unique, and unmodifiable relationship with a given underlying threadblock structure.