Java vlákna | Ako vytvoriť vlákno v Jave

Existujú dva spôsoby vytvorenia vlákna:

  1. Rozšírením triedy Thread
  2. Implementáciou rozhrania Runnable.

Trieda vlákien:

Trieda Thread poskytuje konštruktory a metódy na vytváranie a vykonávanie operácií na vlákne. Trieda Thread rozširuje triedu Object a implementuje rozhranie Runnable.

Bežne používané konštruktory triedy Thread:

  • vlákno()
  • Vlákno (názov reťazca)
  • Vlákno (spustiteľné r)
  • Vlákno (Runnable r, Názov reťazca)

Bežne používané metódy triedy Thread:

    public void run(): sa používa na vykonanie akcie pre vlákno. public void start(): spustí vykonávanie vlákna.JVM volá metódu run() na vlákno. verejný nečinný spánok (dlhé milisekundy): Spôsobí, že aktuálne spustené vlákno uspí (dočasne zastaví vykonávanie) na určený počet milisekúnd. public void join(): čaká na odumretie vlákna. verejné neplatné pripojenie (dlhé milisekundy): čaká, kým vlákno zanikne počas zadaných milisekúnd. public int getPriority(): vráti prioritu vlákna. public int setPriority (int priority): zmení prioritu vlákna. public String getName(): vráti názov vlákna. public void setName(názov reťazca): zmení názov vlákna. public Thread currentThread(): vráti referenciu aktuálne vykonávaného vlákna. public int getId(): vráti ID vlákna. public Thread.State getState(): vráti stav vlákna. verejný boolean isAlive(): testuje, či je vlákno živé. verejný neplatný výnos(): spôsobí, že sa aktuálne spustený objekt vlákna dočasne pozastaví a umožní spustenie iných vlákien. public void suspend(): sa používa na pozastavenie vlákna (zastarané). verejný neplatný životopis(): sa používa na obnovenie pozastaveného vlákna (zastarané). public void stop(): sa používa na zastavenie vlákna (zastarané). verejný boolovský isDaemon(): testuje, či je vlákno vlákno démona. public void setDaemon(boolean b): označí vlákno ako démon alebo užívateľské vlákno. public void interrupt(): preruší vlákno. public boolean isInterrupted(): testuje, či nebolo vlákno prerušené. public static boolean interrupted(): testuje, či bolo aktuálne vlákno prerušené.

Spustiteľné rozhranie:

Rozhranie Runnable by malo byť implementované akoukoľvek triedou, ktorej inštancie sú určené na spustenie vláknom. Spustiteľné rozhranie má iba jednu metódu s názvom run().

    public void run(): sa používa na vykonanie akcie pre vlákno.

Spustenie vlákna:

The metóda start(). trieda Thread sa používa na spustenie novovytvoreného vlákna. Vykonáva tieto úlohy:

  • Spustí sa nové vlákno (s novým zásobníkom hovorov).
  • Vlákno sa presunie zo stavu New do stavu Runnable.
  • Keď vlákno dostane príležitosť na spustenie, spustí sa jeho cieľová metóda run().

1) Príklad Java Thread rozšírením triedy Thread

Názov súboru: Multi.java

 class Multi extends Thread{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi t1=new Multi(); t1.start(); } }  

Výkon:

 thread is running...  

2) Príklad vlákna Java implementáciou rozhrania Runnable

Názov súboru: Multi3.java

 class Multi3 implements Runnable{ public void run(){ System.out.println('thread is running...'); } public static void main(String args[]){ Multi3 m1=new Multi3(); Thread t1 =new Thread(m1); // Using the constructor Thread(Runnable r) t1.start(); } }  

Výkon:

 thread is running...  

Ak nerozširujete triedu Thread, s objektom vašej triedy sa nebude zaobchádzať ako s objektom vlákna. Takže musíte explicitne vytvoriť objekt triedy Thread. Odovzdávame objekt vašej triedy, ktorý implementuje Runnable, aby sa vaša metóda run() triedy mohla spustiť.

3) Použitie triedy vlákien: Thread (Názov reťazca)

Triedu Thread môžeme priamo použiť na vytváranie nových vlákien pomocou konštruktorov definovaných vyššie.

Názov súboru: MyThread1.java

 public class MyThread1 { // Main method public static void main(String argvs[]) { // creating an object of the Thread class using the constructor Thread(String name) Thread t= new Thread('My first thread'); // the start() method moves the thread to the active state t.start(); // getting the thread name by invoking the getName() method String str = t.getName(); System.out.println(str); } }  

Výkon:

 My first thread  

4) Použitie triedy Thread: Thread (Runnable r, String name)

Dodržujte nasledujúci program.

Názov súboru: MyThread2.java

 public class MyThread2 implements Runnable { public void run() { System.out.println('Now the thread is running ...'); } // main method public static void main(String argvs[]) { // creating an object of the class MyThread2 Runnable r1 = new MyThread2(); // creating an object of the class Thread using Thread(Runnable r, String name) Thread th1 = new Thread(r1, 'My new thread'); // the start() method moves the thread to the active state th1.start(); // getting the thread name by invoking the getName() method String str = th1.getName(); System.out.println(str); } }  

Výkon:

 My new thread Now the thread is running ...