ServiceManagerTest.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package org.example.concurrency;
  2. import com.google.common.collect.Lists;
  3. import com.google.common.util.concurrent.Service;
  4. import com.google.common.util.concurrent.ServiceManager;
  5. import com.google.common.util.concurrent.Uninterruptibles;
  6. import org.junit.Test;
  7. import java.util.List;
  8. import java.util.concurrent.Executor;
  9. import java.util.concurrent.TimeUnit;
  10. public class ServiceManagerTest {
  11. @Test
  12. public void serviceManagerTest() {
  13. // 定义两个服务
  14. AbstractExecutionThreadServiceImpl service0 = new AbstractExecutionThreadServiceImpl();
  15. AbstractScheduledServiceImpl service1 = new AbstractScheduledServiceImpl();
  16. List<Service> serviceList = Lists.newArrayList(service0, service1);
  17. // ServiceManager里面管理这两个服务
  18. ServiceManager serviceManager = new ServiceManager(serviceList);
  19. // 添加监听
  20. serviceManager.addListener(new ServiceManager.Listener() {
  21. @Override
  22. public void healthy() {
  23. super.healthy();
  24. System.out.println("healthy");
  25. }
  26. @Override
  27. public void stopped() {
  28. super.stopped();
  29. System.out.println("stopped");
  30. }
  31. @Override
  32. public void failure(Service service) {
  33. super.failure(service);
  34. System.out.println("failure");
  35. }
  36. }, new Executor() {
  37. @Override
  38. public void execute(Runnable command) {
  39. System.out.println(1);
  40. }
  41. });
  42. // 启动服务,等待所有的服务都达到running状态
  43. serviceManager.startAsync().awaitHealthy();
  44. // 等待30s
  45. Uninterruptibles.sleepUninterruptibly(30, TimeUnit.SECONDS);
  46. // 停止服务
  47. // serviceManager.stopAsync().awaitStopped();
  48. }
  49. }