{ ([] args) { =MyThread(); Thread(()->{ (i = ; i < ; i++) { { .incread(); } (e) { e.printStackTrace(); } } },).start(); Thread(()->{ (i = ; i < ; i++) { { .descread(); } (e) { e.printStackTrace(); } } },).start(); Thread(()->{ (i = ; i < ; i++) { { .incread(); } (e) { e.printStackTrace(); } } },).start(); Thread(()->{ (i = ; i < ; i++) { { .descread(); } (e) { e.printStackTrace(); } } },).start(); } } { =; () { (!=){ .wait(); } ++; ..println(.().getName()++); .notifyAll(); } () { (==){ .wait(); } --; ..println(.().getName()++); .notifyAll(); } }