code: @Override
      public void run() {
          if (this.state.compareAndSet(NEW, RUNNING)) {
              try {
                  renameThread("RUNNING");
                  this.threadRef.set(Thread.currentThread());
                  PoolUtils.doWorkInPool(this.jedisPool, new PoolWork<Jedis, Void>() {
                      /**
                       * {@inheritDoc}
                       */
                      @Override
                      public Void doWork(final Jedis jedis) throws IOException {
                          jedis.sadd(key(WORKERS), name);
                          jedis.set(key(WORKER, name, STARTED), new SimpleDateFormat(DATE_FORMAT).format(new Date()));
                          listenerDelegate.fireEvent(WORKER_START, WorkerPoolImpl.this, null, null, null, null, null);
                          loadRedisScripts(jedis);
                          return null;
                      }
                  });
                  poll();
              } catch (Exception ex) {
                  LOG.error("Uncaught exception in worker run-loop!", ex);
                  this.listenerDelegate.fireEvent(WORKER_ERROR, this, null, null, null, null, ex);
              } finally {
                  renameThread("STOPPING");
                  this.listenerDelegate.fireEvent(WORKER_STOP, this, null, null, null, null, null);
                  PoolUtils.doWorkInPoolNicely(this.jedisPool, new PoolWork<Jedis, Void>() {
                      /**
                       * {@inheritDoc}
                       */
                      @Override
                      public Void doWork(final Jedis jedis) {
                          jedis.srem(key(WORKERS), name);
                          jedis.del(key(WORKER, name), key(WORKER, name, STARTED), key(STAT, FAILED, name),
                                  key(STAT, PROCESSED, name));
                          return null;
                      }
                  });
                  this.threadRef.set(null);
              }
          } else if (RUNNING.equals(this.state.get())) {
              throw new IllegalStateException("This WorkerImpl is already running");
          } else {
              throw new IllegalStateException("This WorkerImpl is shutdown");
          }
      }
docs: Starts this worker. Registers the worker in Redis and begins polling the queues for jobs.<br>
  Stop this worker by calling end() on any thread.