Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347

    [Java] Si può forzare java a utilizzare tutti i core presenti nel computer?

    Scusate l'ignoranza ma io sapevo fosse il processore stesso a gestire tutti i core presenti in esso e la suddivisione delle istruzioni, ma ora sono un po confuso. Stiamo studiando i thread all'università e ho fatto una piccola classe per testare il funzionamento dei core del mio computer (ho 4 core, 8 thread).
    codice:
    package others;
    
    public class MulticoreTest{
    	
    	public  MulticoreTest(){
    		
    	}
    	
    	private class Test implements Runnable{
    		
    		private int num = 0;
    		private boolean run = true;
    		private int code = 0;
    		private Thread t;
    		
    		public Test(int code){
    			this.code = code;
    		}
    		
    		@Override
    		public void run(){
    			while(true){
    				System.out.println(this.getClass().getSimpleName()+ code + " " + num++);
    			}
    		}
    		
    		public void start(){
    			t = new Thread(this);
    			t.start();
    		}
    	}
    	
    	public static void main(String args[]){
    		int n = 10;
    		MulticoreTest x = new MulticoreTest();
    		Runnable threads[] = new Runnable[n];
    		for(int i = 0; i < n; i++){
    			threads[i] = x.new Test(i);
    			((Test) threads[i]).start();
    		}
    	}
    }
    Da come ha detto il professore, se avessimo provato a fare qualcosa del genere su un multicore, avremo visto i messaggi dai vari thread sovrapporsi di continuo... invece quello che ho notato io è che sul mio computer funziona con il normale time slicing: cioè un thread ha la possibilità di incrementare la sua variabile interna e stamparla a video circa 50 volte prima che sia tolto dalla cpu... ho capito male io oppure c'è qualcosa che non va?

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    up

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Non è una proprietà di Java, ma una proprietà del sistema operativo (e varia, di conseguenza, da sistema a sistema). Si chiama "Processor Affinity" e può essere cambiata "al volo".

    Per Linux: http://www.cyberciti.biz/tips/settin...r-process.html

    Per Windows: http://www.addictivetips.com/windows...on-in-windows/

    Per Mac non so se sia possibile.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    e ma è una cosa senza senso... e se io l'applicazione la devo dare a qualcuno mica posso dirgli di fare un'operazione del genere...
    Grazie mille per il trucco

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    L'affinità è già preimpostata per tutte le CPU/Core presenti, come volevi tu ... semmai in quel modo modifichi il default.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    Eh infatti me ne sono accorto appena ho provato a farlo... Per il processo java sono disponibili 4 core... Allora qual'è il mio problema?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Io ho provato ad eseguirlo sulla mia macchina (Win 7 64 bit 4 core). Questo è il primo stralcio di esecuzione:

    codice:
    Test0 0
    Test3 0
    Test5 0
    Test7 0
    Test2 0
    Test1 0
    Test2 1
    Test2 2
    Test9 0
    Test9 1
    Test7 1
    Test8 0
    Test5 1
    Test6 0
    Test3 1
    Test0 1
    Test4 0
    Test0 2
    Test3 2
    Test6 1
    Test5 2
    Test8 1
    Test7 2
    Test9 2
    Test2 3
    Test1 1
    Test2 4
    Test9 3
    Test7 3
    Test8 2
    Test5 3
    Test6 2
    Test3 3
    Test0 3
    Test4 1
    Test0 4
    Test3 4
    Test6 3
    Test5 4
    Test8 3
    Test7 4
    Test9 4
    Test2 5
    Test1 2
    Test2 6
    A me sembra corretto.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    Lele, il tuo va alla perfezione! Ora posto quello che esce a me:
    codice:
    Test0 0
    Test0 1
    Test0 2
    Test0 3
    Test0 4
    Test0 5
    Test0 6
    Test0 7
    Test0 8
    Test0 9
    Test0 10
    Test0 11
    Test0 12
    Test0 13
    Test0 14
    Test0 15
    Test0 16
    Test0 17
    Test0 18
    Test0 19
    Test0 20
    Test0 21
    Test0 22
    Test0 23
    Test0 24
    Test0 25
    Test0 26
    Test0 27
    Test0 28
    Test0 29
    Test0 30
    Test0 31
    Test0 32
    Test0 33
    Test0 34
    Test0 35
    Test0 36
    Test0 37
    Test0 38
    Test0 39
    Test0 40
    Test0 41
    Test0 42
    Test0 43
    Test0 44
    Test0 45
    Test0 46
    Test0 47
    Test0 48
    Test0 49
    Test0 50
    Test0 51
    Test0 52
    Test0 53
    Test0 54
    Test0 55
    Test0 56
    Test0 57
    Test0 58
    Test0 59
    Test0 60
    Test0 61
    Test0 62
    Test0 63
    Test0 64
    Test0 65
    Test0 66
    Test0 67
    Test0 68
    Test0 69
    Test0 70
    Test0 71
    Test0 72
    Test0 73
    Test0 74
    Test0 75
    Test0 76
    Test0 77
    Test0 78
    Test0 79
    Test0 80
    Test0 81
    Test0 82
    Test0 83
    Test0 84
    Test0 85
    Test0 86
    Test0 87
    Test0 88
    Test0 89
    Test0 90
    Test0 91
    Test0 92
    Test0 93
    Test0 94
    Test0 95
    Test0 96
    Test0 97
    Test0 98
    Test0 99
    Test0 100
    Test0 101
    Test0 102
    Test0 103
    Test0 104
    Test0 105
    Test0 106
    Test0 107
    Test0 108
    Test0 109
    Test0 110
    Test0 111
    Test0 112
    Test0 113
    Test0 114
    Test0 115
    Test0 116
    Test0 117
    Test0 118
    Test0 119
    Test0 120
    Test0 121
    Test0 122
    Test0 123
    Test0 124
    Test0 125
    Test0 126
    Test0 127
    Test0 128
    Test0 129
    Test0 130
    Test0 131
    Test0 132
    Test0 133
    Test0 134
    Test0 135
    Test0 136
    Test0 137
    Test0 138
    Test0 139
    Test0 140
    Test0 141
    Test0 142
    Test0 143
    Test0 144
    Test0 145
    Test0 146
    Test0 147
    Test0 148
    Test0 149
    Test0 150
    Test0 151
    Test0 152
    Test0 153
    Test0 154
    Test0 155
    Test0 156
    Test0 157
    Test0 158
    Test0 159
    Test0 160
    Test0 161
    Test0 162
    Test0 163
    Test0 164
    Test0 165
    Test0 166
    Test0 167
    Test0 168
    Test0 169
    Test0 170
    Test0 171
    Test0 172
    Test0 173
    Test0 174
    Test0 175
    Test0 176
    Test0 177
    Test0 178
    Test0 179
    Test0 180
    Test0 181
    Test0 182
    Test0 183
    Test0 184
    Test0 185
    Test0 186
    Test0 187
    Test0 188
    Test0 189
    Test0 190
    Test0 191
    Test0 192
    Test0 193
    Test0 194
    Test0 195
    Test0 196
    Test0 197
    Test0 198
    Test0 199
    Test0 200
    Test0 201
    Test0 202
    Test0 203
    Test0 204
    Test0 205
    Test0 206
    Test0 207
    Test0 208
    Test0 209
    Test0 210
    Test0 211
    Test0 212
    Test0 213
    Test0 214
    Test0 215
    Test0 216
    Test0 217
    Test0 218
    Test0 219
    Test0 220
    Test0 221
    Test0 222
    Test0 223
    Test0 224
    dopo un po passa a un'altro, tipo Test4, che però rimane attivo per il suo quanto di tempo senza che nessun'altro faccia niente...

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    347
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.