Computer >> Máy Tính >  >> Lập trình >> Java

Java Concurrency - phương thức output ()

Hàm lợi nhuận

Hàm cố gắng đảm bảo rằng chuỗi quan trọng hơn sẽ chạy trước thay vì một chuỗi mất quá nhiều thời gian để được thực thi và cũng không quan trọng.

Khi luồng gọi phương thức java.lang.Thread.yield, nó là một dấu hiệu để bộ lập lịch luồng tạm dừng việc thực thi của nó. Bộ lập lịch luồng chọn chấp nhận hoặc bỏ qua chỉ báo này.

Nếu luồng thực thi chức năng 'yiêng', bộ lập lịch sẽ kiểm tra xem liệu luồng có mức độ ưu tiên tương tự hoặc cao hơn có xuất hiện hay không. Nếu vậy, luồng hiện tại được chuyển sang trạng thái có thể chạy hoặc sẵn sàng và luồng đó được cấp tài nguyên bộ xử lý.

Cú pháp của hàm lợi nhuận -

public static native void yield()

Hãy để chúng tôi xem một ví dụ -

Ví dụ

import java.lang.*;
class Demo extends Thread{
   public void run(){
      for (int i=0; i<3 ; i++)
      System.out.println("In control of " + Thread.currentThread().getName() + " thread");
   }
}
public class Demo_one{
   public static void main(String[]args){
      Demo my_obj = new Demo();
      my_obj.start();
      for (int i=0; i<3; i++){
         Thread.yield();
         System.out.println("In control of " + Thread.currentThread().getName() + " thread");
      }
   }
}

Đầu ra

In control of main thread
In control of main thread
In control of main thread
In control of Thread-0 thread
In control of Thread-0 thread
In control of Thread-0 thread

Một lớp có tên Demo mở rộng lớp Thread. Ở đây, một hàm ‘run’ được định nghĩa sẽ lặp qua một tập hợp các phần tử và lấy tên của chuỗi bằng cách sử dụng hàm ‘getName’. Một lớp có tên ‘Demo_one’ định nghĩa hàm chính nơi một thể hiện mới được tạo và nó được bắt đầu bằng cách sử dụng hàm “start”. Ở đây, các phần tử cũng được lặp lại và hàm lợi nhuận được gọi trên luồng.

  • Khi luồng đã hoàn thành việc thực thi bằng phương thức lợi nhuận, sẽ có nhiều luồng cạnh tranh về tài nguyên của bộ xử lý. Không có cách nào để chỉ định luồng nào sẽ thực thi trước.

  • Khi luồng thực thi phương thức lợi nhuận, nó sẽ chuyển từ trạng thái Running sang trạng thái Runnable.

  • Chỉ có thể sử dụng phương pháp lợi nhuận nếu nền tảng hỗ trợ lập lịch trước.

  • Khi luồng tạm dừng trong quá trình thực thi, không có cách nào để đảm bảo rằng nó sẽ sớm có cơ hội, tất cả phụ thuộc vào thuật toán lập lịch và trình lập lịch luồng.