Understanding Reproducibility and Characteristics of Flaky Tests Through Test Reruns in Java Projects