Java is becoming more and more important in various fields. It is widely used for developing classical, distributed and real time applications. One of its key features in these domains is its multithreading system. Although a specification exists, it is informally written in the English language. Therefore, an additional formalization effort is required. This paper focuses on that point. The authors' aim is to provide a model that can be reused and help in the processes of: using Java threads to gain deep knowledge of their behavior; designing new threading systems taking the best out of Java threads still avoiding their main drawbacks.