I've been working for months now on my own GUI system (in Java). I had created a turn-based-game, events can only be fired by a player or AI, sequentially. I created a Graph containing Cells containing grosso modo ScreenComponents (such as scrolling text with a prompt, images, looping animations, bounded animations). Cells were linked between themselves using a key code. It was working just fine, I thought I had a good Idea but the absence of answers from the net makes me think I did something wrong, on the paper, it's awesome because unless the player does something, so it's using nearly zero CPU.
So could someone give me the name (if there is one, I really hope so) of what I'm trying to do? I asked my teachers no one was able to help me.
The idea of doing work in response to user interaction or other external events is known as Event-Driven Programming (https://en.wikipedia.org/wiki/Event-driven_programming) and is standard for graphical applications, especially games.
Doing all work in the UI thread would cause things to only happen sequentially. This is OK if all of the work you need to do can be completed in a short amount of time such that it doesn't negatively affect the user's ability to interact with the application or adversely affect other processes. Often times applications will start single-threaded like this and will only be upgraded to a multi-threaded application when you start encountering heavier workloads.
That said, I would always use at least two threads for a game: one for updating the UI and receiving the initial user-input, and one more thread for the actual processing of user input and other, autonomous game events.