2017-03-02 2 views
1

J'étudie les priorités de threads et j'ai à la fois Windows 10 et Ubuntu 16.0 lts système d'exploitation.Fil de discussion basé sur les priorités?

Et je dois savoir que Windows ne fournit pas de traitement basé sur les priorités, de sorte que je ne peux pas voir l'utilisation de programmes de threads basés sur la priorité que cela fonctionne réellement. J'ai donc exécuté mon programme basé sur les priorités dans ubuntu parce que quelqu'un m'a dit que le processus basé sur les priorités d'ubuntu. Mais quand j'exécute mon programme, il affiche la même sortie ou la même sortie que Windows.

Donc, est-il possible d'activer la priorité dans Ubuntu, nous pouvons activer la priorité dans Windows, mais pour cela, je devrais avoir des fenêtres d'origine que je n'ai pas.

class MyThread extends Threads { 
    public void run() { 
    for(int i=0;i<20;i++) 
     System.out.println(Thread.currentThread().getName()+""+i); 
    } 
    } 

class TestThread { 
    public static void main(String[] arg){ 
    Thread.currentThread().setPriority(1); 
    MyThread t1=new MyThread(); 
    t1.setPriority(10); 
    t1.start(); 
    for(int i=0;i<20;i++) 
    system.out.println(Thread.currentThread().getName()+""+i); 
} 
} 
+0

Qu'essayez-vous de réaliser en priorisant certains threads? Si vous voulez que le code s'exécute séquentiellement, vous pouvez reconsidérer la conception de votre programme. En outre, fournir certaines spécifications du matériel, telles que le nombre de cœurs de traitement, peut être utile à ceux qui répondent à la question. –

+0

Encore une chose: vous nous demandez de passer notre temps à vous aider. Donc, s'il vous plaît passez la diligence raisonnable et mettez A) un code correctement formaté/induit qui compile (vous ne le feriez pas) B) il s'appelle Ubuntu; pas Ubantu. C) l'autre chose qui n'est pas vraiment géniale ... qui pose des questions; et puis se retourner et partir. – GhostCat

+0

Enfin, juste parce que je suis moi-même curieux ... Je viens de passer environ ** une heure complète ** pour coder un exemple qui montrerait les effets de différentes priorités sur Linux. Devine quoi. J'ai échoué. Peut-être que je continue demain, mais le vrai point ici: comme je vous l'ai dit; les choses sont beaucoup plus difficiles que vous ne le pensez ;-) – GhostCat

Répondre

2

En Java, fil priorités sont plus d'une recommandation vers la machine virtuelle Java. En d'autres termes: chaque implémentation JVM décide elle-même de l'utilisation de ce concept. Donc, il ne s'agit pas seulement de Windows vs. Linux; mais aussi à propos d'Oracle JVM contre OpenJDK ou IBM JVM; et potentiellement aussi à propos de la version A d'une JVM et d'une version B plus récente de celle-ci.

Et au-delà de cela: soyez assuré qu'un tel code d'exemple (désolé) naïf, signifiant trop simple, et non vous aidera à déterminer si votre JVM prend en charge les priorités ou non.

Le point est: tandis que le système sont pas sous forte charge; et il n'y a pas de pénurie de ressources ... les chances sont que même un fil de faible priorité sera en mesure de cracher des instructions println sur le même rythme d'un thread de haute priorité.

Si vous êtes vraiment curieux d'explorer de telles choses; vous devrez mettre en place un exemple plus complexe; où vos fils font du vrai travail; et puis vous essayez d'ajouter "load" à votre système - pour ensuite observer si les threads de haute priorité peuvent faire plus de progrès que ceux de faible priorité!