This isn't a coherent strategy, just a collection of things that worked for me. Feel free to pick and choose:

- Isolate yourself. Bring a book on the bus (or to the park/airport/restaurant) and don't bring any other distractions. The internet is your enemy; if you want to digest large works, set aside some time where you won't spoil your appetite by grazing on RSS feeds and blog posts.

- Be willing to skim, skip sections, or quit early. The book will still be there later, and you can always read it again if it turns out you missed something worthwhile.

- Write reviews or summaries in a diary, blog, or paper notebook. Include quotes you found interesting. Copy the quotes by hand, it will help you remember them later.

- Have two or three books "in progress" at any given time. (I like to read one fiction and one nonfiction book at a time.) Let yourself choose the book you're in the mood for right now. Be willing to put a book away and switch to a different one if you're not in the mood, or not getting anything out of it right now. Maybe you'll be in the mood later, or maybe it's not the right book.

- Do the homework. If the book teaches knowledge you can apply to problems (like a programming language or a field of mathematics) and doesn't have exercises, make up your own. Apply it to something you're working on, just for practice, even if it's not the best tool.

- For a book that's not teaching a practical skill (e.g. fiction, history, biography), actively compare it to current events, or to your own life or work, or to other people/books/fields. If you can't find some relevance to something outside the book, why are you reading it at all? (There are valid answers, but you should at least ask the question.)

- Chase references. The library is a web, and footnotes are hyperlinks. Follow the links back in time to find out what the author was reading and thinking at the time. In scholarly work, find the classic papers/books that everyone cites, and actually read them (most people don't). This can give you some of the endorphin-fueled "seeking" behavior that makes web surfing addictive. Rate every book you read on a site like Amazon, and then use its recommendations to help refill your queue.

- Find better books. There are so many worthwhile books that you will never read them all in your lifetime. You don't have time to waste on bad books. If a book is poorly-written, toss it unless it contains some knowledge or insight that you consider really important. (Similarly, a book can be very well-written but have content that adds nothing to your life; skip that one too.) Figure out which books you got the most out of, and seek out similar ones. Find sources of good recommendations. Again, be willing to put down a book if you're not getting anything out of it.

- Read with partners. Join or form a book group, or convince a friend or two to read along with you. (You don't need formal discussions; it can just give you another convenient conversation topic next time you hang out.) Recruit co-workers, or look online (GoodReads, or forums like this one). This works especially well with intimidating but well-regarded books (SICP, Ulysses, Wealth of Nations), since you can find other people who want to read them too. http://infinitesummer.org/ helped spur me to read Infinite Jest, and I'm planning to read 2666 with them next month.