Oops..i didnt see JAVA API documentation before I made my earlier reply on this. For your first question, I think
you should use scheduleAtFixedRate as it stands for recurring the task at fixed rate or intervals, and, if for any reason, such as garbage collection, an execution of the task gets delayed, the subsequent ones happen at a faster rate to catch up.
On the other hand, if you used schedule, if an execution slips, the next one is still distanced from it by the fixed "period" value. So there is a good chance that over a period of time your scheudled task will slip away from Monday 8PM.
For your second question, I dont think scheduleAtFixedRate will execute the task for the period that has already lapsed. But I think schedule might trigger the task right away if the start date is in the past. Am not sure though.