Javada multithreadingga erishishni ikki xil usuli bor.
Shu ikki xil holatda thread yaratishimiz mumkin. Bu ikki xil classdan voris olgan holatda juda ko’p usullarda thread yaratishimiz mumkin.
Thread classidan extend olib thread yaratish
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new ForThread());
// ForThread thread = new ForThread();
// Thread thread = new ForThread();
// commentga olingan ikki xil holat ham yuqoridagi bilan bir xil ishlaydi
thread.start(); // threadni shunday start beramiz ya'ni yangi thread ochamiz
}
}
class ForThread extends Thread {
@Override
public void run() {
// bu qismda yangi ochilgan threadda qilinishi kerak bo'lgan ishlar yoziladi
// ya'ni ochilgan threadimiz shu yerdan ishlab boshlaydi
}
}
Runnable interfacedan implement olib thread yaratish
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new ForThread());
thread.start();
}
}
class ForThread implements Runnable {
@Override
public void run() {
}
}
Bu usul bilan yuqorida threaddan extend olib yaratililgan thread bilan deyarli bir xil ishlaydi.
Thread ishlashiga na’muna:
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new ForThread());
thread.start();
for (int i = 0; i < 10; i++) {
System.out.println("asosiy thread " + i);
}
}
}
class ForThread implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("qo'shimcha thread " + i);
}
}
}
Natija:
asosiy thread 0
qo'shimcha thread 0
asosiy thread 1
qo'shimcha thread 1
asosiy thread 2
qo'shimcha thread 2
asosiy thread 3
qo'shimcha thread 3
asosiy thread 4
qo'shimcha thread 4
asosiy thread 5
qo'shimcha thread 5
asosiy thread 6
qo'shimcha thread 6
asosiy thread 7
qo'shimcha thread 7
asosiy thread 8
qo'shimcha thread 8
asosiy thread 9
qo'shimcha thread 9
Ko’rinayotganidek natijada kod qatorma-qator o’qilmagan, ya’ni bir paytda ikki xil ish bajarilgan. Threadga start berishda threadning start() methodiga murajaat qilish kerak. run() methodiga emas. Agar run() methodiga murajaat qilinsa, thread yaralmasdan. Oddiy methodga o’xshab kodlar qatorma qator o’qiladi.
Threadlarning ishlash ketma-ketligi