I think you misunderstood the concept of threaded execution (i have to guess a bit as your text is quite hard to understand for a non-native speaker).
you need only one application which is of the type UiApplication as it features user interaction.
As soon as an UI element like a screen is pushed your application is visible.
If you call requestBackground() your application switchs to the background. You can access it using the task manager (alt+ESC), for example.
All UI elements are worked by the event thread, an internal thread of the device. By pushing a screen you put it in the queue of the event thread which displays it. The 'enterEventDispatcher' used in the beginning of an UiApplication shows this.
Blocking operations like networking, large calculations or file i/o are seperated from the event thread as their execution would stop the function of the BB UI otherwise. Thus you define sub-classes in your application and run them with certain tasks.
Here is an example. I use the (kind of) dirty direct class reference without interfaces to make things simpler.
Code:
public static void main(String[] args) {
MyApp theApp = new MyApp();
theApp.enterEventDispatcher();
}
//constructor
public MyApp(){
//define a Screen and show it
actionScreen = new ActionScreen(this);
pushScreen(actionScreen);
//do many things
//define a background thread
new BackgroundWorker(this).start();
requestBackground();
}
if your BackgroundWorker finishes it calls the application using the reference it got in the constructor. The application now requests foreground and can display any information the BackgroundWorker got.
Maybe i should start giving BB workshops instead of developing myself