Threads: como saber se uma plataforma suporta ou não TimeSlicing

Olá pessoal.

Já pesquisei no GUJ e no GOOGLE por algo que pudesse me ajudar com esta dúvida mas não encontrei nada esclarecedor o suficiente.

Bom a dúvida é a seguinte: como saber ( através de testes ) se o escalonador em uma plataforma utiliza timeslicing ou não.

Compilei o código abaixo utilizando primeiramente uma saída COM buffer ( System.out.println ).
Deste modo, a saída acabava me indicando que na plataforma que estou utilizando (Linux), não era suportado o timeslicing,
pois a primeira thread era executada até o fim e então a segunda thread começava a trabalhar.

Porém, depois realizei o teste utilizando saída SEM buffer ( System.err.println ), e o resultado foi diferente.
Agora algumas vezes o resultado sai intercalado e outras o resultado sai como no teste bufferizado.

Agora tudo indica p/ mim que no Linux, é suportado o timeslicing. Esta última saída do programa foi confiável? existe outra maneira de descobrir isto???

Obrigado.

Código da thread

public class PrintThread extends Thread
{
	public PrintThread( String name ) {
		super( name );
		System.out.println( "Name:" + getName() );
	}
	
	@Override
	public void run() {

		java.util.Date d;
		Timestamp ts;
		
		d = new java.util.Date();
		ts = new Timestamp( d.getTime() );
		
		System.err.println( getName() + " STARTED RUNNING AT: " + ts.getTime() );
		for(int i = 0; i < 5; i++) {
			for(int j = 0; j < 300000000; j++) {}
			System.err.println( getName() + " " + i );
			
		}

		d = new java.util.Date();
		ts = new Timestamp( d.getTime() );
		
		System.err.println( getName() + " FINISHED AT: " + ts.getTime() );
	}
}

Código que utiliza as threads

public class ThreadTester {

	private static final int threads = 2;
	
	public static void main(String[] args) {
		 
		java.util.Date d;
		Timestamp ts;
		
		PrintThread t[] = new PrintThread[ ThreadTester.threads ];
		for( int i = 0; i < ThreadTester.threads; i++ ) {
			t[ i ] = new PrintThread( "thread " + i );
		}
		
		for( int i = 0; i < ThreadTester.threads; i++ ) {
			d = new java.util.Date();
			ts = new Timestamp( d.getTime() );
			System.err.println( t[ i ].getName() + " STARTED AT MAIN THREAD AT: " + ts.getTime() );
			t[ i ].start();
		}

		d = new java.util.Date();
		ts = new Timestamp( d.getTime() );
		
		System.err.println( "END OF MAIN AT: " + ts.getTime() );
	}
}

Ambas as plataformas suportam time slicing; é que o comportamento da saída-padrão (out) é ligeiramente diferente para o Windows e o Linux.