@JRubyMethod(name = "initialize", rest = true, frame = true, visibility = Visibility.PRIVATE)
public IRubyObject initialize(IRubyObject[] args, Block block) {
Ruby runtime = getRuntime();
if (!block.isGiven()) throw runtime.newThreadError("must be called with a block");
RubyRunnable runnable = new RubyRunnable(this, args, block);
if (RubyInstanceConfig.POOLING_ENABLED) {
threadImpl = new FutureThread(this, runnable);
} else {
Thread thread = new Thread(runnable);
thread.setDaemon(true);