文字列を受け取るコールバック関数があります。この文字列は、処理に時間がかかるため、処理のために別のスレッドに渡されます。また、複数のコールバックが同時に発生する可能性があるため、文字列を新しいスレッドに渡すまで同期ロックが必要です。しかし、新しいスレッド (処理が行われている場所) もロックしたくありません。
誰かがこれのデザインを理解するのを手伝ってくれませんか?
私は次のコードを書きましたが、これでは、別のスレッドの処理全体も完了するまでコールバックを受信できないため、この新しいスレッドの目的全体が無効になると思います。
String sLine;
onClick(String line){
synchronized (lock) {
sLine = line;
new Thread(new Runnable() {
@Override
public void run() {
doProcessing(Sline);
}).start();
}
}