No, you should queue up data in your class (running on its own thread), and then inside the draw method, call a (properly synchronized) method on your object to see if more data is available, and if so, act on it (also synchronized) so that draw() can continue.