offer() vs add()
Trong PriorityBlockingQueue (unbounded), offer(E e) và add(E e) hành vi giống nhau: luôn trả về true và không bao giờ ném IllegalStateException vì hàng đợi không bao giờ đầy. offer là phương thức của interface Queue.
Ví dụ thêm phần tử khi click
actionEvent.setOnClickListener(v -> {
priorityBlockingQueue.offer("tutorialspoint.com");
actionEvent.setText("Queue: " + priorityBlockingQueue);
});
MainActivity.java hoàn chỉnh
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.PriorityBlockingQueue;
public class MainActivity extends AppCompatActivity {
private PriorityBlockingQueue<String> priorityBlockingQueue;
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
priorityBlockingQueue = new PriorityBlockingQueue<>();
final TextView actionEvent = findViewById(R.id.actionEvent);
priorityBlockingQueue.add("sai");
priorityBlockingQueue.add("ram");
priorityBlockingQueue.add("krishna");
priorityBlockingQueue.add("prasad");
priorityBlockingQueue.add("ram");
actionEvent.setText("Queue: " + priorityBlockingQueue);
actionEvent.setOnClickListener(v -> {
priorityBlockingQueue.offer("tutorialspoint.com");
actionEvent.setText("Sau offer: " + priorityBlockingQueue);
});
}
}
Kết quả
Phần tử mới "tutorialspoint.com" được chèn vào vị trí phù hợp theo thứ tự alphabet (priority).