如何在特定的活动线程上运行任务?

Dev*_*101 2 java swing multithreading android

有没有一种方法可以让我执行类似的任务,例如 android OS 或 java AWT 线程,其中任务在特定线程上运行,无论从哪个线程的哪个线程调用该方法,例如 repaint()。

private Thread thread;
  public void startThread(){ //method which start's my thread
    thread = new Thread(new Runnable(){
      doSomething();
    });
    thread.start()
  }

  public void submitTask(Runnable runnable){
    //run the runnable task on the thread "thread"
  }
Run Code Online (Sandbox Code Playgroud)

在我有多个活动线程的情况下,我怎样才能实现这样的目标

Pau*_*een 5

我之前处理这种情况的方法是创建一个工作队列和一个处理添加到其中的任务的线程。因此,任何线程都可以将工作项添加到队列中,并且无论哪个线程添加了该工作项,同一个线程都会处理它。

 public class MyClass {

    private LinkedBlockingQueue<MyTask> myTaskProcessingQueue;

    public MyClass() {
        myTaskProcessingQueue = new LinkedBlockingQueue<MyTask>();
        new MyTaskWorker().start();
    }

    public void processTask(MyTask myTask) {
        myTaskProcessingQueue.put(myTask);
    }

    private class MyTaskWorker extends Thread {

        @Override
        public void run() {
            while (true) {
                try {
                    processMyTask(myTaskProcessingQueue.take());
                } catch (InterruptedException ie) {
                    // handle it
                }
            }
        }

        private void processMyTask(MyTask myTask) {
            // do work
        }
    }
}
Run Code Online (Sandbox Code Playgroud)