Q:

¿Cómo manipulo el hilo principal, desde un hilo secundario?

Tengo el siguiente código de un servicio que ejecuta un nuevo hilo, en el cual deseo que después de X cantidad de tiempo(en este caso 10s) se termine el hilo, el problema es que no sé cómo terminarlo si no puedo llamar métodos del hilo principal, en el nuevo hilo.
anexo código
@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        super.onStartCommand(intent, flags, startId);
        Log.i(getClass().getSimpleName(), "Intent received");
        if (workerThread == null || !workerThread.isAlive()) {
            Toast.makeText(this, "Servicio en Ejecucion", Toast.LENGTH_SHORT).show();
            workerThread = new Thread(new Runnable() {
                public void run() {
                    try {
                        Log.d("Entró", "si");
                        Thread.sleep(10000);
                        //this.stopSelf(); método que deseo ejecutar, pero como es un nuevo hilo no me lo permite            
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }

            });
            workerThread.start();

        }
        return START_STICKY;
    }

¿Alguna idea de cómo lograr esto?

A:

Puedes ejecutar en el hilo principal usando runOnUiThread().
Aquí te dejo unos enlaces para la documentación de android que lo explican bastante bien en caso de que necesites crear algún handler desde otra clase e implementarlo en el hilo principal.
    workerThread = new Thread(new Runnable() {
        public void run() {
            try {
                Log.d("Entró", "si");
                Thread.sleep(10000);
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        workerThread.interrupt();
                    }
                });          
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

    });
    workerThread.start();

https://developer.android.com/training/multiple-threads/communicate-ui.html
https://developer.android.com/guide/components/processes-and-threads.html

