Ennen kuin esittelet lanka käsite , emme voineet suorittaa useampaa kuin yhtä tehtävää rinnakkain. Se oli haitta, ja sen epäkohdan poistamiseksi Lanka käsite esiteltiin.
A Lanka on erittäin kevyt prosessi, tai voimme sanoa, että prosessin pienin osa, jonka avulla ohjelma voi toimia tehokkaammin ajamalla useita tehtäviä samanaikaisesti.
bash jos kunto
Monimutkaisten tehtävien suorittamiseksi taustalla käytimme Lankakonsepti Javassa . Kaikki tehtävät suoritetaan vaikuttamatta pääohjelmaan. Ohjelmassa tai prosessissa kaikilla säikeillä on oma erillinen suorituspolkunsa, joten prosessin jokainen säie on itsenäinen.
Toinen käytön etu lanka on se, että jos säie saa poikkeuksen tai virheen sen suoritushetkellä, se ei vaikuta muiden säikeiden suoritukseen. Kaikilla säikeillä on yhteinen muisti, ja niillä on oma pino, paikalliset muuttujat ja ohjelmalaskuri. Kun useita säikeitä suoritetaan samanaikaisesti rinnakkain, tämä prosessi tunnetaan nimellä Monisäikeinen .
Yksinkertaisella tavalla säie on:
- Ominaisuus, jonka avulla voimme suorittaa useita toimintoja yhdessä prosessissa.
- Kevyt prosessi.
- Sarja suoritettuja lausuntoja.
- Sisäkkäinen menetelmäkutsujen sarja.
Lanka malli
Kuten prosessi, säie on olemassa useissa tiloissa. Nämä tilat ovat seuraavat:
1) Uusi (valmis käyttöön)
Lanka on sisällä Uusi kun se saa CPU-aikaa.
2) Juokseminen
Lanka on sisällä a Juokseminen ilmoittaa, milloin se on toteutuksessa.
3) Keskeytetty
Lanka on sisällä Keskeytetty tila, kun se on tilapäisesti passiivinen tai käynnissä.
kuinka muuntaa kokonaisluku merkkijonoksi java
4) Estetty
Lanka on sisällä Estetty ilmoittaa, milloin se odottaa resursseja.
5) Lopetettu
Säie tulee tähän tilaan, kun se milloin tahansa pysäyttää suorituksensa välittömästi.
Luodaan säiettä
Säie luodaan joko 'luomalla tai toteuttamalla'. Käytettävä käyttöliittymä tai pidentämällä Lanka luokka . Nämä ovat ainoat kaksi tapaa, joilla voimme luoda säikeen.
Sukellaan yksityiskohtiin molemmista tavoista luoda ketju:
Lankaluokka
A Lanka luokka on useita menetelmiä ja konstruktoreita, joiden avulla voimme suorittaa erilaisia toimintoja säikeelle. Thread-luokka laajentaa Esine luokkaa. The Esine luokka toteuttaa Ajettava käyttöliittymä. Säikeluokassa on seuraavat konstruktorit, joita käytetään erilaisten toimintojen suorittamiseen.
Suoritettava käyttöliittymä (run()-menetelmä)
Runnable-rajapinnan on oltava toteutettu siinä luokassa, jonka ilmentymät on tarkoitettu suoritettavaksi säikeellä. Ajettava käyttöliittymä antaa meille juosta() tapa suorittaa toiminto säikeelle.
mysql näyttää kaikki käyttäjät
start()-menetelmä
Menetelmää käytetään juuri luomamme säikeen aloittamiseen. Se aloittaa uuden ketjun uudella kutsupinolla. Suorituksen jälkeen alkaa() menetelmällä säie muuttaa tilan Uudesta Runnable-tilaan. Se toteuttaa run() -menetelmä kun lanka saa oikean ajan suorittaa se.
Otetaan esimerkki ymmärtääksemme, kuinka voimme luoda a Java säiettä laajentamalla säikeen luokkaa:
ThreadExample1.java
// Implementing runnable interface by extending Thread class public class ThreadExample1 extends Thread { // run() method to perform action for thread. public void run() { int a= 10; int b=12; int result = a+b; System.out.println('Thread started running..'); System.out.println('Sum of two numbers is: '+ result); } public static void main( String args[] ) { // Creating instance of the class extend Thread class ThreadExample1 t1 = new ThreadExample1(); //calling start method to execute the run() method of the Thread class t1.start(); } }
Lähtö:
Säikeen luominen toteuttamalla ajettava käyttöliittymä
Javassa voimme myös luoda säikeen toteuttamalla ajettavan käyttöliittymän. Suoritettava käyttöliittymä tarjoaa meille sekä run()- että start()-menetelmän.
Otetaan esimerkki ymmärtääksemme, kuinka voimme luoda, aloittaa ja suorittaa säiettä ajettavan käyttöliittymän avulla.
ThreadExample2.java
class NewThread implements Runnable { String name; Thread thread; NewThread (String name){ this.name = name; thread = new Thread(this, name); System.out.println( 'A New thread: ' + thread+ 'is created ' ); thread.start(); } public void run() { try { for(int j = 5; j > 0; j--) { System.out.println(name + ': ' + j); Thread.sleep(1000); } }catch (InterruptedException e) { System.out.println(name + ' thread Interrupted'); } System.out.println(name + ' thread exiting.'); } } class ThreadExample2 { public static void main(String args[]) { new NewThread('1st'); new NewThread('2nd'); new NewThread('3rd'); try { Thread.sleep(8000); } catch (InterruptedException excetion) { System.out.println('Inturruption occurs in Main Thread'); } System.out.println('We are exiting from Main Thread'); } }
Lähtö:
Yllä olevassa esimerkissä suoritamme Multithreadingin toteuttamalla suoritettavan käyttöliittymän. Jos haluat lisätietoja monisäikeisestä, Klikkaa tästä .