‫Chào mừng trở lại.
‫Trong video trước, bạn đã biết cách sử dụng các chuỗi và cách bạn có thể thiết lập các mối đe dọa và bắt đầu chúng một cách đơn giản.
‫Và trong video này, chúng ta sẽ xem xét quá trình hoàn thành.
‫Vì vậy, chúng tôi muốn sử dụng một luồng để làm một điều gì đó và chỉ khi một tác vụ cụ thể được hoàn thành, thì chúng tôi muốn tiếp
‫tục.
‫Vì vậy, chúng ta hãy xem xét điều đó.
‫Tôi sẽ tạo một biến mới được gọi là nguồn hoàn thành nhiệm vụ và do đó tôi cần nguồn hoàn thành nhiệm
‫vụ mới và một boolean.
‫Vì vậy, như bạn có thể thấy, nó đang phàn nàn vì nó không biết nguồn hoàn thành nhiệm vụ này là gì.
‫Và để khắc phục nó, tôi cần sử dụng các tác vụ phân luồng sys.
‫Vì vậy, tôi sẽ làm điều đó trong một giây.
‫Và sau đó ở đây.
‫Những gì tôi sẽ làm tiếp theo là tôi sẽ tạo một biến thử nghiệm.
‫Tôi sẽ chỉ gọi một nhiệm vụ, đó là một nguồn hoàn thành nhiệm vụ, hoặc chúng tôi chỉ gọi đây là nguồn hoàn
‫thành nhiệm vụ.
‫Và chúng tôi đặt nhiệm vụ của nó vào kết quả.
‫Vì vậy, chúng tôi muốn có kết quả của nhiệm vụ đó.
‫Vì vậy, giả sử có một nhiệm vụ cụ thể cần chạy và làm một cái gì đó, và sau đó chúng tôi muốn xem
‫kết quả.
‫Vì vậy, nếu nó hoạt động hiệu quả hoặc nó không hoạt động và để kiểm tra điều đó, tôi sẽ loại bỏ ranh giới màu đỏ này ở đây.
‫Vì vậy, tôi sẽ chạy mã như thể không có gì khác trong phương thức chính này, chỉ có mã này ở đây.
‫Vì vậy, tôi sẽ chạy nó.
‫Và như bạn có thể thấy, không có gì xảy ra.
‫Vì vậy, giao diện điều khiển được giữ nguyên hoặc mở, mặc dù chúng ta không có đường màu đỏ trên giao diện điều khiển
‫này, mà chúng ta thường sử dụng nếu chúng ta muốn giữ giao diện điều khiển mở, điều đó có nghĩa là có thứ gì đó chưa hoàn thành.
‫Vì vậy, điều này ở đây thực sự không bao giờ kết thúc vì không có kết quả.
‫Vì vậy, nguồn hoàn thành này không bao giờ thực sự hoàn thành, vì vậy nó không bao giờ được đặt thành true.
‫Và đó là điều mà chúng tôi có thể làm thủ công.
‫Vì vậy, giả sử chúng ta có một nhiệm vụ và chúng ta muốn có kết quả như chúng ta có nó ở đây, nhưng chúng ta thực sự muốn hoàn thành nhiệm
‫vụ đó tại một thời điểm.
‫Vì vậy, những gì chúng ta cần làm cho điều đó là tạo một luồng.
‫Vì vậy, tôi sẽ tạo một
‫luồng var bằng luồng mới và luồng đó sẽ không được bắt đầu ngay lập tức.
‫Vì vậy, tôi đang sử dụng một cách tiếp cận khác một chút so với chúng tôi đã làm ở đây.
‫Vì vậy, ở đây chúng ta chỉ nói luồng mới và sau đó chúng ta có phần thân của luồng.
‫Vì vậy, để mã sẽ được thực thi bất cứ khi nào luồng này được bắt đầu và chúng tôi bắt đầu ngay lập tức, chúng
‫tôi bắt đầu ngay lập tức.
‫Nhưng ở đây chúng tôi chỉ tạo luồng và sau này chúng tôi có thể thực hiện các công việc với nó.
‫Vì vậy, ở đây tôi sẽ chỉ nói giấc ngủ chủ đề.
‫Vì vậy, chỉ cần ngủ trong 1000 mili giây và sau đó cố gắng đặt nguồn hoàn thành
‫nhiệm vụ đó thành true để tri đặt kết quả.
‫Điều đó sẽ làm là cố gắng chuyển nhiệm vụ cơ bản sang trạng thái tác vụ đã chạy sang trạng thái hoàn
‫thành, có nghĩa là nó đã hoàn thành đúng, vì vậy nó sẽ cố gắng đặt hoàn thành của nó thành true.
‫Vì vậy, điều đó có nghĩa là nguồn hoàn thành nhiệm vụ này sẽ được đặt thành true.
‫Và chỉ khi đó chúng ta mới nhận được VAR này, đó là kết quả của nhiệm vụ đó.
‫Vì vậy, chúng ta hãy sáng tạo một chút.
‫Bước vào đây.
‫Vì vậy, bước gỡ lỗi và hãy kiểm tra các ID chuỗi.
‫Và bây giờ để bắt đầu luồng, chúng ta thực sự cần gọi bắt đầu luồng.
‫Và như bạn có thể thấy đối tượng luồng này đây là một luồng sẽ thực hiện tất cả những điều đó sẽ được bắt
‫đầu.
‫Vì vậy, tôi sẽ bắt đầu chuỗi như thế này và trong khi chúng ta đang ở đó, chúng ta hãy xem những gì mà
‫chuỗi cung cấp.
‫Vì vậy, bất cứ khi nào bạn tạo một đối tượng luồng, sẽ có nhiều thuộc tính và phương thức để sử dụng.
‫Hoặc chúng ta có thể sử dụng nhiều cái ở đây.
‫Vì vậy, bạn có thể thấy một bảng là nơi bạn có thể hủy bỏ chuỗi để bạn có thể dừng chuỗi, nhưng điều đó sẽ chạy một
‫ngoại lệ hoặc nó sẽ gây ra một ngoại lệ.
‫Vì vậy, điều đó thực sự rất nguy hiểm.
‫Vì vậy, bạn có thể gặp sự cố ứng dụng của mình với ứng dụng đó dựa trên cách bảo mật đã xây dựng nó.
‫Nhưng bảng là thứ mà bạn tất nhiên có thể sử dụng để dừng một chuỗi, nhưng bạn không bao giờ biết nó thực
‫hiện được bao xa.
‫Vì vậy, có thể xảy ra trường hợp nó không được hoàn thành với các nhiệm vụ mà bạn muốn hoàn thành và điều đó sẽ khiến
‫chương trình của bạn không hoạt động chính xác.
‫Và tất nhiên, có rất nhiều phương thức khác khá thú vị như hoặc các thuộc tính như thế này đang tồn tại, có
‫nghĩa là luồng này hiện đang tồn tại sau đó là nền, có nghĩa là chúng ta có thể nói rằng một
‫luồng nên chạy ở chế độ nền và chúng ta có thể kiểm tra với tài sản này.
‫Cho dù nó ở chế độ nền hay không là một mối đe dọa đối với luồng.
‫Đó là điều mà chúng ta sẽ kiểm tra sau.
‫Vậy một hồ bơi chủ đề là gì?
‫Đó là những gì chúng ta sẽ thấy sau này và v.v.
‫Vì vậy, ID luồng được quản lý là một thứ khá thú vị, nó sẽ cho chúng ta biết về ID của luồng mà
‫chúng ta hiện đang chạy.
‫Vì vậy, hãy sử dụng nó, hãy in nó lên bảng điều khiển.
‫Vì vậy, hãy xem W và tôi sẽ sử dụng số luồng như thế này.
‫Vì vậy, bạn sử dụng ký hiệu đô la và sau đó bạn có số luồng hoặc ID luồng và vì vậy bạn có thể gọi nó.
‫Và sau đó trong dấu ngoặc nhọn, bạn sử dụng ID được quản lý luồng, vì vậy.
‫ID chuỗi được quản lý chuỗi.
‫Và tất nhiên bạn cần phải đóng chuỗi.
‫Được rồi, bây giờ chúng ta hãy kiểm tra nó.
‫Hãy chạy mã.
‫Và chúng tôi là chúng tôi có chủ đề chính của chúng tôi.
‫Và cho đến nay chúng tôi có một cái gì đó trên bảng điều khiển.
‫Như bạn có thể thấy, số luồng là ba.
‫Vì vậy, số luồng này mà chúng tôi có ở đây mà chúng tôi đã tự tạo thực sự là ba và
‫luồng chính mà nó được quản lý ID là một.
‫Vì vậy, như bạn có thể thấy, các con số không thực sự phải theo cách mà bạn mong đợi.
‫Vì vậy, mặc dù chúng tôi chưa tạo chuỗi bổ sung của riêng mình ở đây, nhưng nó sẽ đi từ 1 đến 3.
‫Vì vậy, phải có các chủ đề khác đang chạy mà chúng tôi không thấy ở đây.
‫Được rồi.
‫Và nhân tiện, nếu bạn muốn xem một chuỗi đã bắt đầu và kết thúc nó hay chưa, bạn có thể làm như sau.
‫Vì thế.
‫Vì vậy, chúng ta hãy cắt nó ở đây và đặt nó trong dòng này ở đây.
‫Và trên thực tế, hãy nói bắt đầu và ở đây.
‫Chúng ta không thể sử dụng luồng vì luồng là luồng này mà chúng ta tạo ở đây.
‫Nhưng nếu chúng ta muốn sử dụng nó ở đây trong chính phần thân của luồng, thì chúng ta cần sử dụng luồng hiện tại
‫chấm luồng.
‫Vì vậy, nếu chúng ta làm điều đó ngay bây giờ, chúng ta sẽ có chuỗi mà chúng ta hiện đang ở, chính xác là như vậy.
‫Và ở đây chúng tôi nói rằng nó đã bắt đầu và sau khi hoàn thành chúng tôi nói rằng nó đã kết thúc.
‫Và bây giờ hãy chạy nó.
‫Nó chạy mã.
‫Và như bạn có thể thấy, không có gì được hiển thị trên bảng điều khiển.
‫Hãy chuyển sang bước tiếp theo.
‫Và sau đó nó bắt đầu và kết thúc.
‫Vì vậy, nó diễn ra khá nhanh chóng.
‫Nhưng như bạn có thể thấy, có.
‫Vì vậy, chúng ta hãy cho nó thêm một chút thời gian.
‫Hãy thay đổi nó thành 5 giây.
‫Và chúng ta cũng hãy loại bỏ điểm gỡ lỗi này ở đây và hãy chạy nó.
‫Vì vậy, luồng số ba bắt đầu và sau đó mất một lúc và nó đã kết thúc.
‫Vì vậy, bây giờ bạn thấy rằng dòng mã này thực sự được thực thi chính xác và nó chỉ dừng lại bảng điều khiển của chúng ta.
‫Vì vậy, hãy lấy dòng đọc bảng điều khiển để giữ cho bảng điều khiển mở.
‫Vì vậy, luồng số ba bắt đầu và sau đó 5 giây nó sẽ kết thúc để chúng ta kết thúc luồng số
‫ba.
‫Bây giờ giả sử chúng ta muốn xem nhiệm vụ thực sự đã diễn ra.
‫Vì vậy, nếu nó hoạt động để đặt nó thành true hay không.
‫Chà, chúng tôi biết vì nếu không thì chúng tôi sẽ không đến được bước tiếp theo.
‫Nhưng chúng ta hãy sử dụng bảng điều khiển ngay dòng ở đây.
‫Nhiệm vụ đã được thực hiện và ở đây tôi sẽ viết kết quả sẽ được kiểm tra.
‫Vì vậy, thử nghiệm chỉ là một cái bát, như bạn có thể thấy ở đây, bởi vì nó hoạt động hoặc nó không hoạt động.
‫Vì vậy, chúng tôi bán điều này đúng hoặc sai.
‫Vì vậy, chúng ta hãy kiểm tra nó ra.
‫Và bây giờ chúng ta cần đợi trong 5 giây.
‫Số ba bắt đầu 5 giây và sau đó số ba kết thúc và nó nói rằng nhiệm vụ đã được hoàn thành là đúng.
‫Vì vậy, đó là những gì đang xảy ra ở đây với dòng này.
‫Vì vậy, nó chỉ đơn giản nói rằng nó đã hoàn thành với nhiệm vụ cụ thể này.
‫Được rồi.
‫Vì vậy, trong video này, bạn đã thấy cách bạn có thể sử dụng nguồn hoàn thành nhiệm vụ, cho biết liệu một nhiệm vụ đã được
‫hoàn thành hay chưa.
‫Bạn có thể đặt nó thành true hoặc nó có thể đơn giản làm điều gì đó và được thực hiện.
‫Sau một thời gian, bạn cũng thấy rằng bạn có thể tạo một luồng theo một cách khác, vì
‫vậy bạn thực sự có thể tạo một biến luồng, mà sau đó bạn phải bắt đầu tất nhiên, và bạn có thể đơn giản sử
‫dụng như một đối tượng của luồng lớp.
‫Và sau đó, chúng tôi đã thấy cách chúng tôi có thể sử dụng ID chuỗi quản lý để chúng tôi biết ID của chuỗi cụ thể đó.
‫Và đó là điều mà chúng ta sẽ xem xét kỹ hơn một chút trong video tiếp theo, nơi chúng ta
‫tạo nhiều luồng cùng một lúc và sau đó chúng ta sẽ xem máy của chúng ta sẽ xử lý như thế nào.
‫Vậy hẹn gặp lại các bạn trong video tiếp theo.