org.jruby.Ruby.setThread()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(3.4k)|赞(0)|评价(0)|浏览(96)

本文整理了Java中org.jruby.Ruby.setThread方法的一些代码示例,展示了Ruby.setThread的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Ruby.setThread方法的具体详情如下:
包路径:org.jruby.Ruby
类名称:Ruby
方法名:setThread

Ruby.setThread介绍

[英]Set the thread-local runtime to the given runtime. Note that static threadlocals like this one can leak resources across (for example) application redeploys. If you use this, it is your responsibility to clean it up appropriately.
[中]将线程本地运行时设置为给定的运行时。请注意,像这样的静态线程局部变量可能会在(例如)应用程序重新部署时泄漏资源。如果你使用它,你有责任适当地清理它。

代码示例

代码示例来源:origin: org.jruby/jruby-complete

public static RubyClass createThreadClass(Ruby runtime) {
  // FIXME: In order for Thread to play well with the standard 'new' behavior,
  // it must provide an allocator that can create empty object instances which
  // initialize then fills with appropriate data.
  RubyClass threadClass = runtime.defineClass("Thread", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  runtime.setThread(threadClass);
  threadClass.setClassIndex(ClassIndex.THREAD);
  threadClass.setReifiedClass(RubyThread.class);
  threadClass.defineAnnotatedMethods(RubyThread.class);
  RubyThread rubyThread = new RubyThread(runtime, threadClass);
  // TODO: need to isolate the "current" thread from class creation
  rubyThread.threadImpl = new NativeThread(rubyThread, Thread.currentThread());
  runtime.getThreadService().setMainThread(Thread.currentThread(), rubyThread);
  // set to default thread group
  runtime.getDefaultThreadGroup().addDirectly(rubyThread);
  threadClass.setMarshal(ObjectMarshal.NOT_MARSHALABLE_MARSHAL);
  // set up Thread::Backtrace::Location class
  RubyClass backtrace = threadClass.defineClassUnder("Backtrace", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  RubyClass location = backtrace.defineClassUnder("Location", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  location.defineAnnotatedMethods(Location.class);
  runtime.setLocation(location);
  return threadClass;
}

代码示例来源:origin: org.jruby/jruby-core

public static RubyClass createThreadClass(Ruby runtime) {
  // FIXME: In order for Thread to play well with the standard 'new' behavior,
  // it must provide an allocator that can create empty object instances which
  // initialize then fills with appropriate data.
  RubyClass threadClass = runtime.defineClass("Thread", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  runtime.setThread(threadClass);
  threadClass.setClassIndex(ClassIndex.THREAD);
  threadClass.setReifiedClass(RubyThread.class);
  threadClass.defineAnnotatedMethods(RubyThread.class);
  RubyThread rubyThread = new RubyThread(runtime, threadClass);
  // TODO: need to isolate the "current" thread from class creation
  rubyThread.threadImpl = new NativeThread(rubyThread, Thread.currentThread());
  runtime.getThreadService().setMainThread(Thread.currentThread(), rubyThread);
  // set to default thread group
  runtime.getDefaultThreadGroup().addDirectly(rubyThread);
  threadClass.setMarshal(ObjectMarshal.NOT_MARSHALABLE_MARSHAL);
  // set up Thread::Backtrace::Location class
  RubyClass backtrace = threadClass.defineClassUnder("Backtrace", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  RubyClass location = backtrace.defineClassUnder("Location", runtime.getObject(), ObjectAllocator.NOT_ALLOCATABLE_ALLOCATOR);
  location.defineAnnotatedMethods(Location.class);
  runtime.setLocation(location);
  return threadClass;
}

代码示例来源:origin: com.ning.billing/killbill-osgi-bundles-jruby

runtime.setThread(threadClass);

代码示例来源:origin: org.kill-bill.billing/killbill-osgi-bundles-jruby

runtime.setThread(threadClass);

相关文章

微信公众号

最新文章

更多

Ruby类方法