LOVE JAVA : Day7 แบ่งงานกันทำ ด้วย คลาส Thread ^ ^
หน้า 269 ในช่วงแรกๆ ระบบปฏิบัติการ สามารถทำงานหลายๆ งานในเวลาเดียวกันได้ ด้วยระบบ multitasking โดยโปรแกรมจะถูกส่งไปเข้าคิวที่ CPU เพื่อรอการทำงาน เมื่อโปรแกรมได้ทำงานแล้ว กิจกรรมของมัน เรียกว่า process ซึ่งต้องมีสภาพแวดล้อมเป็นของตัวเอง ที่เรียกว่า PCB process control block
ดังนั้นเมื่อถึงคิวโปรแกรมที่สองจะทำงาน ก็ต้องมีกระบวนการเปลี่ยนสภาพแวดล้อมที่เรียกว่า context switching ซึ่งทำให้เสียเวลามาก จึงมีแนวคิดใหม่ที่เรียกว่า ระบบปฏิบัติการแบบ multi-threading
ซึ่งคือการแบ่ง process ให้เป็นหน่วยที่เล็กกว่าที่เรียกว่า thread เนื่องจากเป็นการทำงานใน process เดียวกัน ทำให้ลดปัญหาด้านเวลา ของการทำ context switching
พอแค่นี้ดีกว่า เขียนเอง ก็งง เอง 55
สถานะของ thread ได้แก่ wait, ready, running, blocked, death
เมื่อสร้าง instance ของ thread ด้วยคำสั่ง new() -> สถานะจะเปลี่ยนเป็น wait เมื่อเรียกคำสั่ง start() เปลี่ยนสถานะจาก wait เป็น ready คือพร้อมที่โดนเรียกไปทำงาน แล้วเปลี่ยนเป็นสถานะ running อย่างรวดเร็ว
ส่วน code ที่ต้องการให้ทำงานแบบ thread จะต้องถูกเขียนใน method ที่ชื่อว่า public void run()
ตัวอย่าง code ตามหนังสือ หน้า 275
โดยการสร้าง class ที่ชื่อ MyThread โดยมี constructor เพื่อตั้งชื่อ Thread มัง ? ส่วนการทำงานก็คือการ พิมพ์ชื่อของ Thread จำนวน 1000 ครั้ง code ตามรูป
ต่อไปเป็นส่วนทดสอบโปรแกรม ก็เพียงสร้าง instance ด้วยคำสั่ง new 3 คำสั่ง พร้อมส่ง argument เพื่อตั้งชื่อ Thread เป็น A B C ตามลำดับ และเรียก method start() เพื่อเปลี่ยน สถานะ wait เป็น ready แล้วเข้าคิวพร้อมถูกเรียกไปทำงาน ถ้าเป็นโปรแกรมปกติ ก็คงพิมพ์ตัวอักษร A หนึ่งพันครั้ง, B หนึ่งพันครั้ง, C หนึ่งพันครั้ง แล้วก็จบโปรแกรม แต่นี้เป็นโปรแกรมแบบ Thread แปลว่า instance ทั้งสามตัว ต้องมีโอกาส run เหมือนกัน ผลลัพธ์จึงเป็นประมาณนี้ ซึ่งจะเห็นว่า มี C แทรกก่อน B ทั้งที่เราสร้าง instance B ก่อน และ runโปรแกรมใหม่ผลลัพธ์ อาจไม่เหมือนเดิม คือการเรียกการทำงาน ตามที่ระบบปฏิบัติการจัดการ
วันที่ 7 แล้วววว
Create Date : 29 มิถุนายน 2557 | | |
Last Update : 29 มิถุนายน 2557 17:52:14 น. |
Counter : 1055 Pageviews. |
| |
|
|
|