Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java
Java
  1. เมื่อไหร่ควรใช้ Synchronized Blocks ใน Java

    Synchronized block เป็นชุดคำสั่งใช้ทำ synchronization บนทรัพยากรเฉพาะของเมธอด ใช้ล็อคออบเจ็กต์สำหรับ shared resource ขอบเขตของ synchronized block เล็กลงกว่า synchronized method ไวยากรณ์ synchronized(object) { // block of code } ที่นี่ object คืออ้างอิงถึงออบเจ็กต์ที่จะ synchronized synchroniz

  2. วิธีตรวจสอบหน่วยความจำที่โปรแกรม Java ใช้งาน

    สำหรับโค้ด Java ที่ รันนาน (long-running) และใช้หน่วยความจำไดนามิกมาก อาจเกิด Out-Of-Memory errors จากพื้นที่ heap ไม่พอ ในโปรแกรมนี้ เราทดสอบ free java heap space ที่โปรแกรมใช้ หาก heap ใช้ มากกว่า 90% จะเรียก garbage collector อย่างชัดเจน (explicitly) เมธอด System.gc() จะบล็อกเธรดที่เรียกจน GC เ

  3. วิธีหาตัวอักษรที่เกิดบ่อยที่สุดใน String ด้วย Java

    String ใช้แทน สตริงอักขระ ทุกตัวอักษรใน Java เป็นอินสแตนซ์ของคลาส String String เป็นค่าคงที่ immutable ไม่สามารถเปลี่ยนค่าได้หลังสร้างแล้ว ในโปรแกรมนี้ เราจะหา ตัวอักษรที่เกิดบ่อยที่สุด (maximum occurred character) ของสตริงที่กำหนด ตัวอย่าง public class MaxOccuredCharacterTest { public static

  4. วิธีสร้าง JDialog โปร่งใส (Transparent) ใน Java

    JDialog เป็นคลาสย่อยของ Dialog ไม่มีปุ่ม minimize และ maximize ที่มุมขวาบน มี 2 ประเภท: modal และ non-modal Layout เริ่มต้นคือ BorderLayout ในโปรแกรมนี้ เราสร้าง transparent JDialog โดยปรับแต่งคลาส AlphaContainer และ override เมธอด paintComponent() ตัวอย่าง import java.awt.*; import javax.swing.*

  5. เกิดอะไรขึ้นถ้าเรียก run() โดยตรงแทน start() ใน Java?

    การเรียก run() method ของออบเจ็กต์ Thread โดยตรง ไม่เริ่มเธรดใหม่ และจะทำงานภายในเธรดปัจจุบัน เพื่อให้ Runnable.run ทำงานในเธรดแยก ต้องทำอย่างใดอย่างหนึ่ง: สร้างเธรดด้วยออบเจ็กต์ Runnable และเรียก start() บน Thread สร้าง subclass ของ Thread และ override run() แล้วสร้างอินสแตนซ์และเรียก start() โดย

  6. วิธีทำ Auto-Complete JComboBox ใน Java

    JComboBox เป็นคลาสย่อยของ JComponent เป็นการรวมของ text field และ drop-down list ให้ผู้ใช้ เลือกค่า สร้างอินเทอร์เฟซ ActionListener, ChangeListener, ItemListener เมื่อผู้ใช้กระทำกับ combo box เราสามารถทำ auto-complete JComboBox ได้เมื่อผู้ใช้พิมพ์ค่าจากคีย์บอร์ด โดยปรับแต่ง combo box (AutoComplete

  7. User Thread vs Daemon Thread ใน Java: ความแตกต่างและการใช้งาน

    Daemon threads ใช้ทำงานเบื้องหลังสำหรับ user threads เมธอด main() ของแอปพลิเคชันเป็น user thread (non-daemon) JVM จะไม่จบการทำงานจนกว่า user threads ทั้งหมดจะจบ เราสามารถกำหนดเธรดที่สร้างโดย user thread ให้เป็น daemon ได้โดยเรียก setDaemon(true) ตรวจสอบว่าเป็น daemon หรือไม่ด้วย isDaemon() ตัวอย่า

  8. วิธีแปลงตัวเลขเป็น String ด้วย toString() ใน Java

    toString() เป็นเมธอดสำคัญของคลาส Object ใช้คืนค่า การแสดงผลแบบสตริง/ข้อความ ของออบเจ็กต์ toString() ของ Object คืนค่าชื่อคลาส ตามด้วย @ และ hashcode (เช่น java.lang.String;@36f72f09) เราสามารถใช้ toString() เพื่อแปลงตัวเลขเป็นสตริงได้เช่นกัน มีประโยชน์เมื่อต้องการรวมตัวเลขจากตัวแปรต่างๆ เป็นสตริงเ

  9. ความสำคัญของ wait(), notify() และ notifyAll() ใน Java

    เธรดสื่อสารกันผ่าน wait(), notify(), notifyAll() ใน Java เป็น final methods ของคลาส Object เรียกได้เฉพาะในบริบท synchronized เท่านั้น wait() ทำให้เธรดปัจจุบันรอจนกว่าอีกเธรดจะเรียก notify() หรือ notifyAll() สำหรับออบเจ็กต์นั้น notify() ปลุกเธรดเดียว ที่รออยู่บน monitor ของออบเจ็กต์ notifyAll() ปลุก

  10. Constructor สามารถเป็น synchronized ใน Java ได้หรือไม่?

    ไม่สามารถ Constructor ไม่สามารถเป็น synchronized ใน Java JVM รับประกันว่าในเวลาเดียวกันจะมีเพียงเธรดเดียวที่เรียก constructor ได้ ดังนั้นไม่ต้องประกาศ synchronized และเป็น ผิดกฎหมาย (illegal) ใน Java แต่เราสามารถใช้ synchronized blocks ภายใน constructor ได้ หากพยายามวาง synchronized keyword หน้า c

  11. วิธีจำกัดจำนวนตัวอักษรใน JPasswordField ด้วย Java

    JPasswordField เป็นคลาสย่อยของ JTextField ตัวอักษรที่พิมพ์จะถูกแทนที่ด้วย echo character เพื่อความปลอดภัยรหัสผ่าน เมธอดสำคัญ ได้แก่ getPassword(), getText(), getAccessibleContext() โดยปกติพิมพ์ได้ไม่จำกัด หากต้องการจำกัด ใช้ DocumentFilter class และ override เมธอด replace() ไวยากรณ์ public void re

  12. สามารถเรียก wait() โดยไม่ได้ lock ก่อนหน้าใน Java ได้หรือไม่?

    ไม่สามารถ เรา ไม่สามารถเรียก wait() โดยไม่ได้ lock ก่อนหน้า ใน Java หลังจากได้ lock แล้วจึงต้องเรียก wait() method (มี timeout หรือไม่มี) บนออบเจ็กต์นั้น หากพยายามเรียก wait() โดยไม่ได้ lock จะโยน java.lang.IllegalMonitorStateException ตัวอย่าง public class ThreadStateTest extends Thread { pub

  13. ความสำคัญของคลาส Dictionary ใน Java

    Dictionary เป็น abstract class แทนคู่ key/value ทำงานคล้าย Map เป็น legacy class ใน Java มีเมธอดสำคัญ 2 ตัวคือ Dictionary.keys() และ Dictionary.elements() ที่วนลูปได้ด้วย Enumeration เมธอดสำคัญอื่นๆ ได้แก่ isEmpty(), get(), remove(), size() ไวยากรณ์ public abstract class Dictionary<K,V> exte

  14. สามารถ Override เมธอด start() ใน Java ได้หรือไม่?

    ได้ เราสามารถ override เมธอด start() ของคลาส Thread ใน Java ได้ ต้องเรียก super.start() เพื่อสร้างเธรดใหม่ และเรียก run() ในเธรดที่สร้างใหม่นั้น หากเรียก run() โดยตรงจากใน start() จะทำงานในเธรดเดิมเหมือนเมธอดทั่วไป ไม่ใช่เธรดใหม่ ตัวอย่าง public class ThreadTest { public static void main(Strin

  15. Object Level Lock vs Class Level Lock ใน Java: ความแตกต่างและการใช้งาน

    Object level lock และ Class level lock ใช้เพื่อให้ได้กลไก synchronization ในแอปพลิเคชัน multi-threaded Object Level Lock ทุกออบเจ็กต์ใน Java มี lock เฉพาะตัว หากเธรดต้องการรัน synchronized method บนออบเจ็กต์ใด ต้องได้ lock ของออบเจ็กต์นั้นก่อน หลังรันเสร็จจะ ปล่อย lock อัตโนมัติ JVM ดูแลการ acquir

  16. วิธีเพิ่มรายการใน JList พร้อมฟอนต์ต่างๆ (Bold, Italic, Underline) ใน Java

    JList เป็นคลาสย่อยของ JComponent ใช้แสดงรายการออบเจ็กต์ ให้ ผู้ใช้เลือกหนึ่งหรือหลายรายการ สร้าง ListSelectionListener ต้องใช้เมธอด valueChanged() คลาส DefaultListModel ให้การใช้งานง่ายสำหรับโมเดลรายการ ใช้ addElement() เพื่อเพิ่มรายการ สามารถเพิ่มรายการพร้อมฟอนต์ต่างๆ ได้ด้วย HTML tags เช่น <b&

  17. ความสำคัญของ Annotation @Override ใน Java

    @Override เป็น annotation เริ่มต้นของ Java เปิดตัวใน Java 1.5 บ่งชี้ว่า เมธอดของคลาสลูกกำลัง override เมธอดของคลาสแม่ @Override มีประโยชน์ 2 ประการ: คอมไพเลอร์จะเตือนถ้าเมธอดที่ annotate ไม่ได้ override อะไรเลย เพิ่มความอ่านง่ายของโค้ดต้นฉบับ ไวยากรณ์ public @interface Override ตัวอย่าง class

  18. วิธีลบแถวที่เลือกใน JTable ด้วย Java

    JTable เป็นคลาสย่อยของ JComponent ใช้แสดงโครงสร้างข้อมูลซับซ้อน ปฏิบัติตามรูปแบบ Model View Controller (MVC) แสดงข้อมูลใน แถวและคอลัมน์ สร้างอินเทอร์เฟซ TableModelListener, TableColumnModelListener, ListSelectionListener, CellEditorListener, RowSorterListener เราสามารถ ลบแถวที่เลือก ได้โดยใช้เมธอด

  19. ความแตกต่างระหว่าง wait() และ sleep() ใน Java

    sleep() เป็น static method ของคลาส Thread ทำให้เธรดปัจจุบันเข้าสู่สถานะ Non-Runnable ส่วน wait() เป็น instance method เรียกผ่านออบเจ็กต์เธรด และมีผลต่อออบเจ็กต์นั้นอย่างเดียว sleep() จะปลุกตัวเองเมื่อเวลาหมดหรือถูก interrupt() ส่วน wait() จะปลุกเมื่อเวลาหมดหรือถูก notify() หรือ notifyAll() sleep()

  20. สามารถ synchronized เมธอด run() ใน Java ได้หรือไม่?

    ได้ เราสามารถ synchronized เมธอด run() ใน Java ได้ แต่ไม่จำเป็น เพราะเมธอดนี้ถูกเรียกใช้โดยเธรดเดียวเท่านั้น ดังนั้น การ synchronize จึงไม่จำเป็นสำหรับเมธอด run() ควร synchronize เมธอด non-static ของคลาสอื่นแทน เพราะอาจถูกเรียกโดยหลายเธรดพร้อมกัน ตัวอย่าง public class SynchronizeRunMethodTest impl

Total 1935 -คอมพิวเตอร์  FirstPage PreviousPage NextPage LastPage CurrentPage:21/97  20-คอมพิวเตอร์/Page Goto:1 15 16 17 18 19 20 21 22 23 24 25 26 27