ローダーがバックグラウンドスレッドでクエリを実行すると言うと、バックグラウンドスレッドでクエリを実行するのはLoaderクラスの実装であることを理解する必要があります。
この結果、抽象クラスのサブクラスを使用または拡張して実装し、AsyncTaskまたはJavaスレッドを使用しないことが必要です。理由は、Loaderを作成するときに、Loader型のインスタンスを返すことが予想されるためです。これに対してJavaスレッドまたはAsyncTaskを使用することはできません。 Loaderクラスのサブクラスは、独自のスレッドを開始することでこれを行います。クライアントクラスまたはローダを作成するクラスは、ローダのみを初期化します。実際のLoaderインスタンスは、必要な処理を実行できます。これは、挿入、更新、削除など何でもかまいません。Android提供のCursorLoader実装は、バックグラウンドスレッドのテーブルからデータを非同期で照会し、結果セットを返します。 Androidは、データの挿入や更新に似たネイティブ実装を提供していません。あなたが持っているのは、AsyncTaskLoader(CursorLoaderが継承するのと同じクラス)から拡張するオプションです。
また、ローダーはデータベースへのアクセスを最適化するために使用されるため、その前にタスクを完了したときにのみメインスレッドに結果を通知します(更新をポストする回避策UIスレッドに渡しますが、これはパラダイムを破ります)。ローダーは作業を完了することにのみ関心があり、更新を提供することには興味がありません。
ContentProviderクエリを非同期で処理したい場合は、Androidで提供されているAsyncQueryHandlerクラスの使用を検討してください。