2016-05-22 5 views
1

Ich habe eine Frage zu Multi Threading auf Betriebssystemebene .
Ich habe einen Java-Code, der nicht Multi-Threading nicht verwendet,Funktioniert mein Java-Code in mehreren Threads, auch wenn ich kein Multi-Threading verwende

public static void main(String[] args) 
{ 
    int sum1=0, sum2=0; 
    for(int i=0; i < 10000; i++) 
     sum1 += i; 
    for(int j=0; j < 20000; j++) 
     sum2 += j; 
    System.out.print(sum1); 
    System.out.print(sum2); 
} 

Wie Sie die beide für Schleifen in dem obigen Code sehen können, ohne einen Fehler in der Ausgabe gleichzeitig zur gleichen Zeit ausgeführt werden. Daher kann das Betriebssystem meinen Code mit 2 Threads gleichzeitig ausführen, um zu beschleunigen. Verwendet ein Betriebssystem Threads, um meinen Code zu beschleunigen?

+2

Sie fragen, ob das ** OS ** Ihren ** Java-Code ** (oder Byte-Code) analysieren und automatisch auf Parallelisierungsmöglichkeiten schließen könnte? –

+1

'zwei for-Schleifen können gleichzeitig gleichzeitig ausgeführt werden 'False. Sie werden linear ausgeführt. Erste Schleife ('i' Variable), dann zweite (' j' Variable). – UDKOX

+0

diese Codes laufen nie gleichzeitig, die Geschwindigkeit der Verarbeitung ist zu schnell, so dass Sie denken, sie sind gleichzeitig, Programme laufen Zeile für Zeile in Java, –

Antwort

3

Ich verstehe Ihre Frage, Sie sind richtig, wenn Sie sagen, die beiden for-Schleifen können parallel laufen, ohne sich gegenseitig zu beeinflussen. Dies ist jedoch etwas, was Sie selbst in Java tun müssen. Hier ist ein Beispiel für zwei Threads parallel ausgeführt wird:

public staic void main(String args[]){ 
    Thread thread1 = new Thread(){ 
    public void run(){ 
     for(int i = 0; i < 100; i++){ 
     System.out.println(i); 
     } 
    } 
    } 
    Thread thread2 = new Thread(){ 
    public void run(){ 
     for(int i = 0; i < 100; i++){ 
     System.out.println(i); 
     } 
    } 
    } 
    thread1.start(); 
    thread2.start(); 
} 

Wenn Sie den Code zu „warten“ für alle Threads zu beenden, dann können Sie die .join() Methode verwenden, wie folgt aus:

try{ 
    thread1.join(); 
    thread2.join(); 
}catch(InterruptedException e){ 
    e.printStackTrace(); 
} 
Verwandte Themen