Mifen
Artikelen: 0
Berichten: 18
Lid geworden op: do 16 okt 2008, 01:00

Proces of thread?

dag allemaal

ik zat te denken over de verschillen tussen proces en thread, ik denk tot dusver dat een proces uit één of meerdere threads bestaat, als ik een proces heb met meerderen threads, dan ben ik een multithreading programma aan het maken.

een thread is dus een deelprogramma van een applicatie, deze applicatie kan 1 of meerdere processen zijn, en elke proces kan verschillende van die deelprogramma's, verschillende thread dus, (misschien ook) tegelijkertijd uitvoeren.

kan iemand zo een voorbeeld geven van de toepassing, hoe proces, thread en multithreading in het programmeren worden toegepast.

ik zou het heel graag in een java applicatie toepassing zien, denk dus aan een opdracht, en ik zal proberen oplossing te vinden, als ik de oplossing heb, dan kan iemand adhv de oplossing die 3 dingen uitleggen

dank bij voorbaat

mvg

M.
Knowledge of self is the key to the knowledge of God.
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Proces of thread?

ik zat te denken over de verschillen tussen proces en thread, ik denk tot dusver dat een proces uit één of meerdere threads bestaat, als ik een proces heb met meerderen threads, dan ben ik een multithreading programma aan het maken.
Er is geen éénduidig antwoord te geven op dit soort vragen. Er zijn op zijn minst 4 implementaties te vinden van threads op de markt.

Er zijn systemen waar elke thread op zich een proces zal voorstellen. Dit heeft als voordeel dat de ene thread de andere niet kan blokkeren als deze crasht. Het nadeel is dat procescreatie vrij veel resources vraagt. Als je heel wat threads gebruikt kan het zelf best zijn dat je het maximum aantal threads overschrijdt.

Een ander systeem bestaat er dan uit om een x aantal threads samen te houden onder 1 proces, stel nu dat je 5 threads per proces bijhoudt, dan heb je 5 keer minder processen nodig dan in het vorige systeem. Echter, als 1 van deze 5 threads vastloopt hebben de andere 4 daar ook last van.

De andere systemen kan ik me niet direct herinneren, maar welk systeem gebruikt wordt hangt af van je OS. Er is bv een groot verschil tussen threads in windows en linux.

Een opdracht verzinnen om je aan te tonen wat een proces, thread en multithreading zijn kan ik toch niet zo direct bedenken.

Momenten waarop je threads gaat gebruikt zijn vooral momenten waarbij je bv enorm zware berekeningen doet en je de gebruiker om de 10s wil laten zien hoe ver die al gevorderd is. Dan kan je simpelweg een nieuwe thread creëeren die om de 10s het rekenproces zal onderbreken en de gebruiker zal verwitten, daarna gaat het rekenwerk simpelweg verder. Zonder threads is dit soort zaken bv onmogelijk.
Mifen
Artikelen: 0
Berichten: 18
Lid geworden op: do 16 okt 2008, 01:00

Re: Proces of thread?

Bedankt

Ik schrijf een programma dat niets anders doet dan hallo Cycloon op scherm afbeeldt:

Code: Selecteer alles

public class Main {

	

	public static void main(String[] args) {

		// TODO code application logic here

		System.out.println("Hallo Cycloon");

	}

}
En ik ga het uitvoeren.

Het is dus een programma: in het geheugen geladen in de vorm van instructies.

?> Is dat nu een proces of thread of een proces bestaande uit één thread?
Knowledge of self is the key to the knowledge of God.
Mifen
Artikelen: 0
Berichten: 18
Lid geworden op: do 16 okt 2008, 01:00

Re: Proces of thread?

Een opdracht verzinnen om je aan te tonen wat een proces, thread en multithreading zijn kan ik toch niet zo direct bedenken.
Je bedoelt volgens mij de procesbeheer en hoe de threads beheerd worden, maar ik doel hier op de toepassing in een programmeertaal, als je een multithreading of threading vanuit een java applicatie implementeert, dan maakt toch niet uit wat je gebruikt als OS of wel?
Knowledge of self is the key to the knowledge of God.
Mifen
Artikelen: 0
Berichten: 18
Lid geworden op: do 16 okt 2008, 01:00

Re: Proces of thread?

Momenten waarop je threads gaat gebruikt zijn vooral momenten waarbij je bv enorm zware berekeningen doet en je de gebruiker om de 10s wil laten zien hoe ver die al gevorderd is. Dan kan je simpelweg een nieuwe thread creëeren die om de 10s het rekenproces zal onderbreken en de gebruiker zal verwitten, daarna gaat het rekenwerk simpelweg verder. Zonder threads is dit soort zaken bv onmogelijk.

Code: Selecteer alles

public class Main {



	public static void main(String[] args) {

		// TODO code application logic here

		int i = 0;

		while (0 == 0) {

			i++;

			if (i % 1000000 == 0) {

				System.out.println(""+i);

			}



		}

	}

}


:D
Knowledge of self is the key to the knowledge of God.
Gebruikersavatar
Cycloon
Artikelen: 0
Berichten: 4.810
Lid geworden op: ma 24 jan 2005, 20:56

Re: Proces of thread?

Mifen schreef:Bedankt

Ik schrijf een programma dat niets anders doet dan hallo Cycloon op scherm afbeeldt:

Code: Selecteer alles

public class Main {

public static void main(String[] args) {

// TODO code application logic here

System.out.println("Hallo Cycloon");

}

}
En ik ga het uitvoeren.

Het is dus een programma: in het geheugen geladen in de vorm van instructies.

?> Is dat nu een proces of thread of een proces bestaande uit één thread?
Het programma zelf is een proces, maar het gaat hier over java dus het is weeral een speciaal geval. Java code wordt uitgevoerd binnen de JVM waardoor dit proces eigenlijk niet echt "bestaat".
Je bedoelt volgens mij de procesbeheer en hoe de threads beheerd worden, maar ik doel hier op de toepassing in een programmeertaal, als je een multithreading of threading vanuit een java applicatie implementeert, dan maakt toch niet uit wat je gebruikt als OS of wel?
Natuurlijk moet je geen rekening houden met het OS dat gebruikt wordt. Je OS regelt die zaken zelf wel in de achtergrond, maar ik dacht dat je meer naar deze achtergrond op zoek was.
Mifen schreef:

Code: Selecteer alles

public class Main {

public static void main(String[] args) {

// TODO code application logic here

int i = 0;

while (0 == 0) {

i++;

if (i % 1000000 == 0) {

System.out.println(""+i);

}

}

}

}
:D
Deze code zal nooit om de 10 seconden update.

Terug naar “Informatica en programmeren”