1) Every weekday 30min uninterrupted study at a specific time, preferably in the morning. Don't miss, rain or shine. Take weekends off, though.
2) Work in a strict linear fashion: read a chapter, then solve all of that chapter's exercises in order without skipping any, and only then allow yourself to peek at the next chapter. Don't "take a first pass through the book", none of that. To remember where you are, use a bookmark.
3) If you're having trouble with some exercise, you can look up the answer key for that specific exercise, but only after you've spent 5 minutes of effort on that specific exercise without making progress. After that, the same rule applies to the next exercise.
4) You've got to get to the end of the book. Matter of pride.
For me this approach has worked well for established topics in math, physics, econ. Haven't tried it for CS or ML.