Sensor Acclerometer en Rosca Separada

Estoy guardando los datos del sensor del acelerómetro en la base de datos, pero quiero hacerlo en un hilo separado. Intenté buscarlo en Internet, pero la mayoría usa el mismo hilo. Por favor ayuda. Cosas que he probado: 1)

SenSorEventListener sel;
    Thread A=new Thread(){
                public void run()
                {
                    sel=new SensorEventListener() {

                        @Override
                        public void onSensorChanged(SensorEvent event) {
                            // TODO Auto-generated method stub
                            double Acceleration,x,y,z;
                            x=event.values[0];
                            y=event.values[2];
                            z=event.values[2];
                            Acceleration=Math.sqrt(x*x+y*y+z*z);
                            db.addAccel(Acceleration);
                            Log.d("MESSAGE","SAVED");
                        }

                        @Override
                        public void onAccuracyChanged(Sensor sensor, int accuracy) {
                            // TODO Auto-generated method stub

                        }
                    };
                }
            };
            A.start();
            try {
                A.join();
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            sm.registerListener(sel,s,1000000);
}

Tomé un SensorEventListener, lo inicialicé en un nuevo Thread y luego lo registré con el oyente de registro.

Otro enfoque: implementé la clase Accelerometer utilizando la interfaz Runnable, inicialicé todo en el Constructor, por lo que mi método run () está en blanco, pero este enfoque no crea un nuevo Thread.

    Accelerometer(Context con,Database d)
        {   
            sm=(SensorManager)con.getSystemService(Context.SENSOR_SERVICE);
            s=sm.getSensorList(Sensor.TYPE_ACCELEROMETER).get(0);
            sm.registerListener(this,s,1000000);
            db=d;
        }
   void run()
   {}

Por favor, sugiérame cualquier otro enfoque o si estoy haciendo algo mal en los enfoques anteriores.

Respuestas a la pregunta(1)

Su respuesta a la pregunta