Pagkakaiba sa pagitan ng Thread Class at Runnable Interface sa Java

May -Akda: Laura McKinney
Petsa Ng Paglikha: 1 Abril 2021
I -Update Ang Petsa: 10 Mayo 2024
Anonim
Anger Management Part 1 | Counselor Toolbox Podcast with Dr. Dawn-Elise Snipes
Video.: Anger Management Part 1 | Counselor Toolbox Podcast with Dr. Dawn-Elise Snipes

Nilalaman


Ang isang thread ay maaaring tinukoy sa dalawang paraan. Una, sa pamamagitan ng pagpapalawak ng isang klase ng Thread na ipinatupad na ang isang Runnable interface. Pangalawa, sa pamamagitan ng direkta pagpapatupad ng isang Runnable interface. Kapag tinukoy mo ang isang thread sa pamamagitan ng pagpapalawak ng klase ng Thread kailangan mong i-override ang run () na pamamaraan sa klase ng Thread. Kapag tinukoy mo ang isang thread na nagpapatupad ng isang Runnable interface kailangan mong ipatupad ang tanging run () na paraan ng Runnable interface. Ang pangunahing pagkakaiba sa pagitan ng Thread at Runnable ay ang bawat thread na tinukoy ng pagpapalawak ng klase ng Thread ay lumilikha ng isang natatanging bagay at nakisali sa bagay na iyon. Sa kabilang banda, ang bawat thread na tinukoy sa pamamagitan ng pagpapatupad ng Runnable interface ay nagbabahagi ng parehong bagay.

Tingnan natin ang ilang iba pang mga pagkakaiba sa pagitan ng Thread at Runnable sa tulong ng tsart ng paghahambing na ipinakita sa ibaba:


  1. Tsart ng paghahambing
  2. Kahulugan
  3. Pangunahing Pagkakaiba
  4. Konklusyon

Tsart ng paghahambing

Batayan para sa PaghahambingThreadMapapatakbo
PangunahingAng bawat thread ay lumilikha ng isang natatanging bagay at makakakuha ng kaugnay dito.Ang maraming mga thread ay nagbabahagi ng parehong mga bagay.
Memorya Habang ang bawat thread ay lumikha ng isang natatanging bagay, kinakailangan ang higit pang memorya.Tulad ng maraming mga thread ay nagbabahagi ng parehong bagay na mas kaunting memorya ang ginagamit.
PagpapalawakSa Java, ang maraming pamana ay hindi pinapayagan mula rito, pagkatapos na mapalawak ng isang klase ang klase ng Thread, hindi ito maaaring palawakin ang anumang iba pang klase.Kung ang isang klase ay tumutukoy sa thread na nagpapatupad ng Runnable interface ay may pagkakataon na mapalawak ang isang klase.
Gumamit Ang isang gumagamit ay dapat pahabain lamang ang klase ng thread kung nais nitong malampasan ang iba pang mga pamamaraan sa klase ng Thread.Kung nais mo lamang na dalubhasa ang paraan ng pagtakbo pagkatapos ipatupad ang Runnable ay isang mas mahusay na pagpipilian.
Pagkakasama Ang pagpapahaba ng klase ng Thread ay nagpapakilala ng mahigpit na pagkabit habang naglalaman ang klase ng code ng klase ng Thread at pati na rin ang trabaho na nakatalaga sa threadAng pagpapatupad ng Runnable interface ay nagpapakilala ng maluwag na pagkabit dahil ang code ng Thread ay hiwalay na form ng trabaho ng Threads.


Kahulugan ng Class Thread

Thread ay isang klase sa java.lang package. Ang klase ng Thread ay umaabot ng isang Bagay klase, at ipinatutupad ito Mapapatakbo mga interface. Ang klase ng Thread ay may mga konstruksyon at pamamaraan upang lumikha at mapatakbo sa thread. Kapag lumikha kami ng maraming mga thread, ang bawat thread ay lumilikha ng isang natatanging bagay at nakikipag-ugnay sa bagay na iyon. Kung lumikha ka ng isang thread na nagpapalawak ng klase ng Thread, sa karagdagang hindi mo maaaring pahabain ang anumang iba pang klase dahil ang java ay hindi sumusuporta sa maraming pamana. Kaya, dapat mong piliin na palawigin lamang ang klase ng Thread kapag nais mo ring i-override ang ilang iba pang mga pamamaraan ng klase ng Thread. Tingnan natin ang isang halimbawa ng paglikha ng isang thread na nagpapalawak ng isang klase ng Thread.

/ * Ang pagtukoy ng isang thread * / Mythread ng Klase ay nagpapalawak ng Thread {/ * trabaho ng thread * / public void run () {para sa (int i = 0; i <10; i ++) {System.Out.ln ("Thread ng Bata" ); }} Class mainThread {/ * job ng main thread * / public static void main (String args) {Mythread mt = new Mythread (); / * pangunahing thread ay nilikha ang thread ng bata * / mt.start (); para sa (int i = 0; i <10; i ++) {System.Out. ("Main Thread"); }} / / Output * / Main Thread Main Thread Main Thread Main Thread Child Thread Bata ng Bata Thread Bata ng Bata Thread Pangunahing Bata Thread Main Thread Pangunahing Bata Pangunahing Bata ng Bata Thread Pangunahing Bata

Sa code sa itaas, gumawa ako ng isang klase ng Mythread na nagpapalawak ng klase ng Thread at tinatablan ang isang paraan ng pagtakbo ng klase ng Thread. Sa klase na naglalaman ng pangunahing pamamaraan ay lumilikha ako ng isang bagay na thread (mt) ng klase ng Mythread at gamit ang thread na bagay na nagsumite ng simula () na pamamaraan. Sinimulan ang pamamaraan ng pagsisimula sa pagpapatupad ng thread at sa parehong oras ay hinihimok ni JVM ang paraan ng pagtakbo ng thread. Ngayon ay may dalawang mga thread sa programa ang isang pangunahing thread at pangalawang thread ng bata na nilikha ng pangunahing thread. Ang pagpapatupad ng parehong mga thread ay nangyayari nang sabay-sabay, ngunit, ang eksaktong output ay hindi maaaring magpanggap.

Kahulugan ng Runnable Interface

Mapapatakbo ay isang interface sa java.lang package. Ang pagpapatupad ng Runnable interface maaari naming tukuyin ang isang thread. Ang runnable interface ay may iisang pamamaraan tumakbo (), na ipinatutupad ng klase na nagpapatupad ng Runnable interface. Kapag pinili mong tukuyin ang pagpapatupad ng thread na nagpapatupad ng isang Runnable interface mayroon ka pa ring pagpipilian upang palawakin ang anumang iba pang klase. Kapag lumikha ka ng maraming mga thread sa pamamagitan ng pagpapatupad ng Runnable interface, ang bawat thread ay nagbabahagi ng parehong runnable na halimbawa. alamin natin kung paano tukuyin ang isang thread gamit ang Runnable interface.

/ * Ang pagtukoy ng isang thread * / Class Runnablethread ay nagpapatupad ng Runnable {/ * job ng thread * / public void run () {para (int i = 0; i <10; i ++) {System.Out.ln ("Breading ng Bata" ); }} Class mainThread {/ * job ng main thread * / public static void main (String args) {Mythread rt = new Mythread (); / * pangunahing thread ay nilikha ang runnable object * / Thread t = bagong Thread (rt); / * pangunahing thread ay lumilikha ng thread ng bata at ipinasa ang runnable object * / t.start (); para sa (int i = 0; i <10; i ++) {System.Out. ("Main Thread"); }} / / Output * / Main Thread Main Thread Main Thread Main Thread Child Thread Bata ng Bata Thread Bata ng Bata Thread Pangunahing Bata Thread Main Thread Pangunahing Bata Pangunahing Bata ng Bata Thread Pangunahing Bata

Sa code sa itaas, gumawa ako ng isang klase ng Runnablethread na nagpapatupad ng Runnable interface at tinukoy ang trabaho ng thread sa pamamagitan ng pagpapatupad ng run () na paraan ng Runnable interface. Pagkatapos ay lumikha ako ng isang pangunahing klase ng klase na naglalaman ng pangunahing pamamaraan. Sa loob ng pangunahing pamamaraan, ipinahayag ko ang isang runnable object ng klase na Runnablethread at ipinasa ang bagay na ito sa tagapagtayo ng Thread habang idineklara ang isang thread. Sa ganitong paraan, na-link ko ang thread na bagay (t) na may isang runnable object (rt). Pagkatapos ay hinihimok ng bagay na sinimulan ang pamamaraan ng sinulid na karagdagang hinihiling na paraan ng pagpapatakbo ng klase ng Runnablethread. Kung hindi ako naka-link na runnable na bagay sa bagay na Thread, kung gayon ang pamamaraan ng pagsisimula ng mga thread ay maiudyok ang paraan ng pagtakbo ng klase ng Thread. Ngayon, muli ang dalawang mga thread sa code, ang pangunahing thread at pangunahing thread ay lumilikha ng thread ng bata na parehong pinapatay nang sabay-sabay ngunit ang eksaktong output ay hindi kailanman maaaring magpanggap.

Mga Pangunahing Pagkakaiba sa pagitan ng Thread at Runnable sa Java

  1. Ang bawat thread na nilikha sa pamamagitan ng pagpapalawak ng klase ng Thread ay lumilikha ng isang natatanging bagay para dito at nakikipag-ugnay sa bagay na iyon. Sa kabilang banda, ang bawat thread na nilikha sa pamamagitan ng pagpapatupad ng isang Runnable interface ay nagbabahagi ng parehong runnable na halimbawa.
  2. Tulad ng bawat thread ay nauugnay sa isang natatanging bagay kapag nilikha sa pamamagitan ng pagpapalawak ng klase ng Thread, kinakailangan ang higit pang memorya. Sa kabilang banda, ang bawat thread na nilikha sa pamamagitan ng pagpapatupad ng Runnable interface ay nagbabahagi ng parehong puwang ng object samakatuwid, nangangailangan ito ng mas kaunting memorya.
  3. Kung palawigin mo pa ang klase ng Thread pagkatapos, maaari kang magmana ng anumang iba pang klase dahil hindi pinapayagan ng Java ang maraming mana samantalang, ang pagpapatupad ng Runnable ay nagbibigay pa rin ng isang pagkakataon para sa isang klase na magmana ng anumang iba pang klase.
  4. Ang isa ay dapat na pahabain ang isang klase ng Thread lamang kung kailangan nitong i-override o dalubhasa ang ilang iba pang mga pamamaraan ng klase ng Thread. Dapat mong ipatupad ang isang Runnable interface kung nais mo lamang na dalubhasa ang paraan ng run.
  5. Ang pagpapalawak ng klase ng Thread ay nagpapakilala ng mahigpit na pagkabit sa code dahil ang code ng Thread at trabaho ng thread ay nilalaman ng parehong klase. Sa kabilang banda, ang pagpapatupad ng Runnable interface ay nagpapakilala ng maluwag na pagkabit sa code dahil ang code ng Thread ay seprate mula sa trabaho na itinalaga sa thread.

Konklusyon:

Mas pinipiling ipatupad ang isang Runnable interface sa halip na palawakin ang klase ng Thread. Tulad ng pagpapatupad ng Runnable ay gumagawa ng iyong code nang malubhang kaisa bilang ang code ng thread ay naiiba sa klase na nagtalaga ng trabaho sa thread. Nangangailangan ito ng mas kaunting memorya at pinapayagan din ang isang klase na magmana ng anumang iba pang klase.