I feel like it's physically painful for me to not work in this way. I can not give undivided attention when there's something that needs to get out, and am certainly jealous of people who can context switch out of a flow like it's nothing.
Similarly, if I've been deeply focused, my brain has switched out normal, every day concerns for work material, my brain state is settled in to focus mode, etc. I spend hours a day (and have for years) teaching myself to focus on a large, abstract set of information in a particular state to attack problems. (It's actually a lot like visualization meditation -- to be able to hold a complex model of what you're working on in your head while you work.)
Im not able to instantly turn it off, it takes time to switch out of that mode of thinking and to bring back the "normal" information. It has nothing to do with priorities -- context switching, particularly a mode switch, takes time.
My ex used to hate that, she'd say "your not listening?" and I'd repeat verbatim everything she said and then she'd get annoyed because listening and listening are different things.
Current GF gets into a flow state herself so she is way more understanding :).
Happens to me all the time :)
So I've cobbled together a workflow that doesn't require massive blocks of uninterrupted time to drive results. It mostly revolves around the concepts of imperative, recognition, and refinement.
When I'm working, I'm either moving through an imperative, recognizing what the imperative is, or refining the system. Each of these steps has a well-defined mental workflow. I can put down the work at any time, then come pick it up later after the interruption is gone, quickly re-recognizing the imperative so I can start moving forward again.
Refinement is crucial to the system and allows for quicker recognition. For example, years of experience have taught me to always start with a clear workspace. If I can't recognize an imperative, then I start cleaning. Once everything's clean, I go look to repositories of the state of the project, such as the tracker, to get a high-level overview.
There I can see I already have a story open. By looking at the story, my familiarity and past refinements lead me to a structured way of developing the feature or fixing the bug. If I can't see a clear path forward, then I don't have an imperative and I need to design a new workflow. I used to try to put workflows down on paper, but these days I only do it for edge cases that I don't see very often, but are still really important. For example fixing mobile-only display bugs, my normal workflow of reproducing the issue from the test server locally doesn't work.
By enforcing a fairly rigid structure to my workflow and refining as needed, I can keep my mind free to wander while I'm working through imperatives. This means I can put the whole thing down, go play ping pong or grab lunch, and pick right back up where I left off when I get back. It's not perfect, but it doesn't need to be perfect.
It would be rough if I had a wife who didn't...
But can you listen patiently, if you have been in a flow before?
I can't, even though I too often try to, to be polite, but I think I prefer being honest and stay in the flow, if I want to.
And when I am done, I am free for other persons.
But it takes good balance, true.