While i was reading your post i could really understand what you mean. Back in the days when i was struggling more to learn i used to do the same thing as you. Started to read a big good book about java but quickly losing my focus to something else and taking long breaks , until i changed my approach severely.
Here are some tips that i trully think may work for you:
1.Read less , practice more
I mean literally, when i began to jump straight foward towards the exercises ( supposing you know the basics of OO programming at this point ) and THEN reading the explanation afterwards, it became a lot more clear to me and less boring, since you are actually typing examples and exercising your mental ability it is less likely for you to lose focus.
2.Have a study plan
That increases alot of your absortion towards content,more than you think. I began with 2 hours a day and eventually increasing as i felt confortably ( you can start with 30 minutes, i did 2 hours because i was uses to study this long while i was in university.
Well i know it sounds like basic tips but really thats kinda the thing you need to ger things done, simplicity.
Try it out and let me know,
Cheers