基本的に Thread.new と同じですが、 new メソッドと違い initialize メソッドを呼びません。
502 Bad Gateway
の意味が分からなくて、initializeを呼んでいる分newの方がオーバーヘッドがでかいんじゃないかと思って、ベンチマークとってみたけど、ほとんど差がなくて、うーんってなっていたので、ここぞとばかりにZnZさんに教えていただきました。
結局何が違うかというか、Threadを継承したクラスを使うときに、newメソッドだとそのサブクラスのinitializeが呼ばれて、sratr(fork)メソッドだと呼ばれないという点です。
以下の検証コードで試してみました。
class MyThread < Thread def initialize super puts 'MyThread was created' end end MyThread.new { p:new }.join p:=== MyThread.start { p:start }.join
結果は、
:new MyThread was created :=== :start
なるほど、なるほど。