Я очень разочарован в Java за то, что не позволил следующему коду перемещаться так же быстро, как мог. Когда синхронизация отсутствует, два потока переключаются чаще, но при попытке доступа к синхронизированному методу потребуется слишком много времени (например, 30 секунд), прежде чем второй поток получит блокировку, и снова, прежде чем первый поток получит блокировку со второго. Какая кодировка может помочь лучше разделить блокировку:
public synchronized static void i()
{
System.out.println(Thread.currentThread().getName());
}
public static void main(String[] f)
{
Thread t = new Thread(new Runnable(){
public void run()
{
while(true)
i();
}});
t.setName("a: ");
Thread t2 = new Thread(new Runnable(){
public void run()
{
while(true)
i();
}});
t2.setName("b: ");
t.start();
t2.start();
}