LinkedBlockingDeque và offer()
LinkedBlockingDeque có thể bị giới hạn dung lượng (bounded) nếu truyền capacity vào constructor. offer(E e) (thêm vào cuối) trả về false nếu deque đã đầy, thay vì ném exception như add().
Ví dụ thêm vào cuối (offerLast tương đương)
package com.example.myapplication;
import android.os.Build;
import android.os.Bundle;
import android.view.View;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.widget.TextView;
import java.util.concurrent.LinkedBlockingDeque;
public class MainActivity extends AppCompatActivity {
private LinkedBlockingDeque<String> linkedBlockingDeque;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Không truyền capacity => unbounded
linkedBlockingDeque = new LinkedBlockingDeque<>();
final TextView actionEvent = findViewById(R.id.actionEvent);
linkedBlockingDeque.add("sai");
linkedBlockingDeque.add("ram");
linkedBlockingDeque.add("krishna");
linkedBlockingDeque.add("prasad");
linkedBlockingDeque.add("ram");
actionEvent.setText("Deque: " + linkedBlockingDeque);
actionEvent.setOnClickListener(v -> {
// Thêm vào cuối
linkedBlockingDeque.offer("tutrialspoint"); // typo trong gốc
actionEvent.setText("Sau offer: " + linkedBlockingDeque);
});
}
}
Lưu ý
Nếu khởi tạo new LinkedBlockingDeque<>(3) (giới hạn 3 phần tử), offer sẽ trả về false khi đã đầy.