snipplrCallback({"id":28363,"title":"jruby-jetlang-example","source":"
require<\/span> "java"<\/span><\/div><\/li> require<\/span> "jetlang-0.2.0.jar"<\/span><\/div><\/li> <\/div><\/li> include_class "org.jetlang.fibers.ThreadFiber"<\/span><\/div><\/li> include_class "org.jetlang.channels.MemoryChannel"<\/span><\/div><\/li> <\/div><\/li> <\/div><\/li> class<\/span> Arnie<\/div><\/li> def<\/span> initialize(<\/span>channel, consumer)<\/span><\/div><\/li> @channel<\/span> = channel<\/div><\/li> @consumer<\/span> = consumer<\/div><\/li> end<\/span><\/div><\/li> def<\/span> start<\/div><\/li> on_receive = Proc<\/span>.new<\/span> do<\/span> |<\/span>message|<\/span><\/div><\/li> case<\/span> message<\/div><\/li> when<\/span> "The End"<\/span><\/div><\/li> puts<\/span> "I will be back..."<\/span><\/div><\/li> @consumer<\/span>.dispose<\/span><\/div><\/li> @consumer<\/span>.join<\/span><\/div><\/li> when<\/span> "Terminate"<\/span><\/div><\/li> puts<\/span> "Hastala vista baby!!!"<\/span><\/div><\/li> else<\/span><\/div><\/li> puts<\/span> "You are terminated******"<\/span><\/div><\/li> end<\/span><\/div><\/li> end<\/span><\/div><\/li> @channel<\/span>.subscribe<\/span>(<\/span>@consumer, on_receive)<\/span><\/div><\/li> @consumer<\/span>.start<\/span><\/div><\/li> end<\/span><\/div><\/li> def<\/span> ^(<\/span>message)<\/span><\/div><\/li> @channel<\/span>.publish<\/span>(<\/span>message)<\/span><\/div><\/li> end<\/span><\/div><\/li> end<\/span><\/div><\/li> <\/div><\/li> terminator = Arnie.new<\/span>(<\/span>MemoryChannel.new<\/span>, ThreadFiber.new<\/span>)<\/span><\/div><\/li> terminator.start<\/span><\/div><\/li> terminator ^ "Terminate"<\/span><\/div><\/li> terminator ^ "Buy me icecream"<\/span><\/div><\/li> terminator ^ "The End"<\/span><\/div><\/li> terminator ^ "Terminate"<\/span> # Will not execute as terminator is already dead...<\/span><\/div><\/li><\/ol><\/pre>","link":"https:\/\/snipplr.com\/view\/28363\/jruby-jetlang-example"});