package refreshpluginstest; import java.util.ArrayList; import javax.imageio.spi.ServiceRegistry; public class SimpleTest { public static void main(String[] args) { final ArrayList services = new ArrayList(); services.add(MyService.class); final ServiceRegistry reg = new ServiceRegistry(services.iterator()); new Thread(new Rgisterer(reg)).start(); new Thread(new Consumer(reg)).start(); } static class Consumer implements Runnable { private final ServiceRegistry reg; boolean go = true; public Consumer(ServiceRegistry r) { reg = r; } @Override public void run() { while (go) { reg.getServiceProviders(MyService.class, true); } } } static class Rgisterer implements Runnable { private final ServiceRegistry reg; boolean go = true; public Rgisterer(ServiceRegistry r) { reg = r; } @Override public void run() { final int N = 20; MyService[] services = new MyService[N]; for (int i = 0; i < N; i++) { services[i] = new MyService(); } while (go) { for (int i = 0; i < N; i++) { reg.registerServiceProvider(services[i]); } for (int i = 0; i < N; i++) { reg.deregisterServiceProvider(services[i]); } } } } static class MyService { public MyService() { } } }