I treat programming as a language. You understand it by going in hard and not trying to understand. If you learn it by trying to dictionary lookup every word, it's really slow.
Instead, you try to understand the context of a sentence, and then the words back from there.
So what I do is I read the table of contents and intro. Intro usually covers what makes the book different and has instructions on how to use it.
You'll find a few pillars. Like if you're reading an algorithm book you'll see Big O notation mentioned a few times. Focus on those pillars. Spend more time on them.
Maybe from Big O, it will give binary search as an example. Then skim the chapter on binary search and return to Big O until you master it.
You'll transverse the more important parts of the book better this way. Many books are not strictly meant to be linear.
I also recommend transversing content in this way as fast as possible once, in one go. Set aside about an hour to skim the entire book.
You'll get the "skeleton" of the book, what holds it together.
Then you focus on the pillars of the book. And once you're done with that, you can do the rest of the content you skipped.
Once you read something, explain it to yourself differently to prove you've mastered the concept. This might involve doing an exercise on it. If you're familiar with it, just drawing a figure might be good enough.
Also I agree with what the others have said: compare with other books on the topic and make sure it's a good one before you read anything.