depends on the objects you create, but TextureStates and Textures always have to be created inside the OpenGL thread. So, in your "other" class you just enqueue the TextureState and Texture creation in the GameTaskQueue.
For a list of methods that have to be called inside the Open GL thread search the wiki and the forum.
if you do somthing like Textures outside the OpenGl thread, the results can be anything from nothing to OpenGlExceptions.
since OpenGL does something like:
use texture A
draw thing with texture A
draw thing with texture A
use texture B
draw thing with texture B
if you load the texture B outside OpenGL the line "use texture B" is not given and the following geometries will be drawn with texture A.
This is much simplified but you'll get the idea of whats going on
Next gotcha with Textures is when people (including me) always forget do call updateRenderState() after setting TextureStates. That can also lead to random Textures on geometries.
Actually textures do not have to be loaded in the GL thread. Textures are merely data, and reading them or parsing them does not require OpenGL, which is a renderer. What does require OpenGL though, is sending the data to the video card, which is done automatically when the model with the texture is first drawn. Another concern comes with TextureManager, it is a utility class and does not really relate much to renderer. The issue with it is that it’s not thread safe. If you attempt to load textures from multiple threads you will receive a ConcurrentModificationException.
So, using TextureManager from multiple threads = crash
Loading textures or TextureStates from multiple threads without TextureManager = okay
Anyway, neither of this relates to the issue here… You say the objects loaded will have the same texture. The first thing that comes to mind is, did you call updateRenderState() on your scene after loading has finished? If you did, consider using a scene debugging tool like Scene Monitor and check if the objects really do use different textures.