安卓POST请求怎么放到线程里?

最近写了个获取验证码,为减少代码复用,我把post网络请求放在了一个工具类里面,当主程序无需获取服务器的返回数据时,只用new Thread这种线程就行了,但是当需要获取返回值时,比如获取用户名,验证码等,用new Thread就不行了

请问怎么实现在一个有返回值的post请求方法中开创线程?并且主程序还能调用这个return数据?真是刚入坑,自己实现不了,多谢多谢!

还是可以用new Thread,只不过在run方法中要通过handler传值给主线程
class Mhandler extends Handler {

    // 通过复写handlerMessage() 从而确定更新UI的操作
    @Override
    public void handleMessage(Message msg) {
        // 根据不同线程发送过来的消息,执行不同的UI操作
        // 根据 Message对象的what属性 标识不同的消息
        switch (msg.what) {
            case 1:
                mTextView.setText("执行了线程1的UI操作");
                break;
            case 2:
                mTextView.setText("执行了线程2的UI操作");
                break;
        }
    }
}

// 此处用2个工作线程展示
new Thread() {
@Override
public void run() {
这里执行http请求
String result = post(url,data);
// 通过sendMessage()发送
// a. 定义要发送的消息
Message msg = Message.obtain();
msg.what = 2; //消息的标识
msg.obj =result; // 消息的存放
// b. 通过Handler发送消息到其绑定的消息队列
mHandler.sendMessage(msg);
}
}.start();

网络请求是耗时操作,不能以返回值的方式接收响应。如果是kotlin的话,可以用协程实现。java可以通过接口回调的方式