The purpose of this paper consists of demonstrating an implementation methodology of sequential and distributed simulations using Java programming: two specific algorithms based on Java threads (single-channel and multi-channel algorithms) are proposed. From this point of view, the events are timely ordered into events lists and controlled by threads with respect to clock cycles. Each thread possesses its event list. The threads are globally timed in the sequential case by one clock, meanwhile in the distributed case they are locally clocked. The main application that is targeted by this work is the simulation of hardware/software systems, where different components are described by threads and obey a multi-clocked system.