Tôi đang tạo một plugin bukkit cho bạn tôi, và tôi muốn tìm hiểu cách gọi một hàm mỗi 2 lần đánh dấu (1/10 giây).Cách thực hiện một chức năng được gọi là 2 dấu tích
Trả lời
Vâng, đây có thể không phải là nơi bạn muốn xem. Bạn nên sử dụng this cho bất kỳ nhu cầu phát triển nào của mình.
Dù bằng cách nào, tôi có thể trả lời câu hỏi của bạn. Bạn muốn sử dụng công cụ lên lịch được tích hợp sẵn. Bạn có thể truy cập nó bằng cách sử dụng
server.getScheduler();
Cụ thể, bạn sẽ muốn tạo Runnable và làm cho nó gọi phương thức của bạn cứ 2 lần.
int id = server.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
public void run() {
myMethod();
}, 0, 2);
Tôi sẽ giải thích sự khác biệt với đồng bộ hóa và không đồng bộ trong giây, nhưng điều này sẽ thực hiện những gì bạn muốn. Đối số đầu tiên chỉ là tham chiếu đến plugin (Thông thường this
hoặc plugin
). Thứ hai là runnable, và rõ ràng bạn nên thay thế myMethod
bằng phương thức bạn muốn gọi. Đối số thứ ba là số lượng độ trễ (Trong ve) cho đến khi phương thức đầu tiên chạy. Tôi giả định 0, nhưng nó cũng có thể là hai tùy thuộc vào những gì bạn muốn làm. Đối số cuối cùng là khoảng thời gian giữa các lần chạy mà bạn muốn là hai.
Bạn sẽ nhận thấy rằng phương pháp này trả về một số nguyên, mà bạn có thể sử dụng để hủy bỏ nhiệm vụ như vậy:
server.getScheduler().cancelTask(id);
Điều quan trọng là để thảo luận về sự khác biệt giữa Async và Sync. Bạn sẽ nhận thấy phương pháp mà chúng tôi đã gọi ngay từ đầu cho biết lịch biểu Đồng bộ hóa RepeatingTask. Đồng bộ hóa có nghĩa là Runnable mà chúng tôi đã chỉ định làm đối số thứ hai sẽ được chạy trên luồng chính của máy chủ. BẤT CỨ phương pháp gọi phương thức Bukkit/CraftBukkit/Minecraft PHẢI được chạy dưới dạng đồng bộ. Nếu bạn chạy một cái gì đó mà nói, sửa đổi một khối, như Async bạn hoàn toàn có thể bị hỏng máy chủ. Chỉ cần không làm điều đó;) Async, mặt khác, tạo ra một chuỗi riêng biệt cho Runnable, được sử dụng cho các tác vụ nền, chẳng hạn như sao chép và dán một tệp hoặc kiểm tra thời gian của nó. Một lần nữa, KHÔNG BAO GIỜ chạy một phương pháp sẽ sửa đổi thế giới là Không đồng bộ.
Cuối cùng, trong tương lai nếu bạn chỉ muốn chạy một lần và sau đó không lặp lại, bạn chỉ có thể sử dụng phương thức int id = scheduleSyncDelayedTask(plugin, Runnable, 2)
, với hai đối số đầu tiên giống nhau và thứ ba là độ trễ cho đến khi chạy được được điều hành (Bọ ve)
Chúc may mắn,
Mẹo
- 1. Cách thực hiện chức năng gọi lại trong Coffeescript
- 2. Lắng nghe một chức năng được gọi là JavaScript
- 3. Chức năng không được gọi là
- 4. gọi sizeof trên một cuộc gọi bỏ qua chức năng thực sự gọi chức năng!}
- 5. chức năng tự thực hiện
- 6. Danh sách tất cả các cuộc gọi chức năng được thực hiện trong một ứng dụng
- 7. Tìm hiểu Nếu một chức năng đã được gọi là
- 8. Thực hiện chức năng gọi lại trong C
- 9. Cách thực hiện chức năng thể dục
- 10. cần tây - chức năng gọi khi thực hiện công việc
- 11. Cách chức năng thư viện trong Haskell được thực hiện
- 12. Gọi chức năng Lua mà không thực hiện kịch bản
- 13. Chức năng ảo thuần túy được gọi là lỗi
- 14. rspec 2: phát hiện cuộc gọi đến phương thức nhưng vẫn thực hiện chức năng của nó
- 15. Làm thế nào để có được mô-đun mà từ đó chức năng hiện đang thực hiện được gọi?
- 16. android runonuithread() chức năng không thực hiện
- 17. là lambdas python được thực hiện khác với chức năng tiêu chuẩn?
- 18. Thực hiện chức năng được chỉ định mỗi X giây
- 19. Dấu vết của các chương trình được thực hiện được gọi là bash script
- 20. CodeIgniter, biết điều khiển mà được gọi là chức năng
- 21. Thực hiện nhiều cuộc gọi đóng cho một fd trong cùng một vấn đề chức năng?
- 22. thực thi yêu cầu chức năng gọi
- 23. psycopg2 không thực hiện chức năng PostgreSQL
- 24. Chức năng Javascript được gọi là trong Chrome
- 25. thực hiện chức năng trên phím enter
- 26. Chức năng cho setTimeout được gọi là gì?
- 27. Tệp đính kèm RavenDB - Chức năng cách thực hiện?
- 28. thực hiện chức năng SIP trong IOS5
- 29. Chức năng gọi trong DLL được chèn
- 30. Chức năng ảo thuần túy được gọi là
Tại sao downvote? Làm thế nào điều này ít hợp lệ hơn so với yêu cầu làm thế nào để sử dụng bất kỳ API khác? Bukkit thực sự là một api được xuất bản khá phổ biến, nếu không hợp lệ để hỏi về việc bạn nên bắt đầu các câu hỏi bỏ phiếu xuống về mọi API - MySQL, Hibernate ... –
bản sao có thể có của [Java Loop mỗi phút] (http: //stackoverflow.com/questions/2702980/java-loop-every-minute) –
@DavidZ Sử dụng 'BukkitAPI' cho điều này rất khác nhau, sau đó sử dụng nó chỉ với' Java'. Sử dụng 'Sleep' sẽ dừng toàn bộ máy chủ trong' x' giây, gây lag và nhiều vấn đề khác. – Jojodmo