1
ブロックされたキューからデータを消費しようとしています。実行メソッドで消費メソッドを実装する必要があります。 runメソッドで実装する必要があります 私は、次のしているコード私は、「Runメソッド」Javaでのマルチスレッドのrunメソッドを使用したメソッドの呼び出し
@Override
public void run() {
// TODO Auto-generated method stub
}
の下で実行するために、上記の方法をしようとしています
@Override
public String consume(String lastSourceOffset, int maxBatchSize, BatchMaker batchMaker) throws StageException {
long nextSourceOffset = 0;
if (lastSourceOffset != null) {
nextSourceOffset = Long.parseLong(lastSourceOffset);
}
if (queue.size() != 0) {
Record record = getContext().createRecord("some-id::" + nextSourceOffset);
Map<String, Field> map = new HashMap<>();
try {
map.put("fieldName", Field.create(queue.take()));
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
record.set(Field.create(map));
batchMaker.addRecord(record);
++nextSourceOffset;
}
return String.valueOf(nextSourceOffset);
}
は、私はそれを呼び出すことができる方法はあります。
public class ConsumeRunner implements Runnable{
String lastSourceOffset;
int maxBatchSize;
BatchMaker batchMaker;
public ConsumeRunner(String lastSourceOffset, int maxBatchSize, BatchMaker batchMaker)
{
this.lastSourceOffset=lastSourceOffset;
this.maxBatchSize=maxBatchSize;
this.batchMaker=batchMaker;
}
@Override
public void run() {
consume(lastSourceOffset, maxBatchSize, batchMaker);
}
}
あなたが代わりに引数なしのコンストラクタのを除いて、通常はあなたのスレッドを作成するには、新しいカスタムいずれかを使用します。
私はhttps://stackoverflow.com/questions/32760391/calling-different-methods-of-same-class-using-multi-threading-in-javaで投稿を読みましたが、私は同じものを実装することができません – sri
それはどういう意味ですか?あなたはrunメソッドが本質的に '消費する 'ようにすべてを設定することを意味しますか? –
私は消費方法を実行するためにrunメソッドを作っています。 – sri