That sounds like an odd way of doing things. You shouldn't need a static currentScreen variable. You can get the current screen object with:
Code:
UiApplication.getUiApplication().getActiveScreen()
And are you saying you are casting a screen object to runnable? That sounds like your problem right there! If you want to push a screen from a non-UI thread:
Code:
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run()
{
UiApplication.getUiApplication().pushScreen(myScreen);
}
});