The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package shared_jvm_test ;

use strict ;

use blib ;

use Inline (
	Java => 'DATA',
	NAME => "shared_jvm_test",
	SHARED_JVM => 1,
) ;

$shared_jvm_test::t::i = 0 ;

my $nb = 10 ;
my $sum = (($nb) * ($nb + 1)) / 2 ;
for (my $i = 0 ; $i < $nb ; $i++){
	if (! fork()){
		print STDERR "." ;
		shared_jvm_test::do_child($i) ;
	}
}


# Wait for kids to finish
for (my $i = 0 ; $i < 5 ; $i++){
	sleep(1) ;
	print STDERR "." ;
}
print STDERR "\n" ;

if ($shared_jvm_test::t::i == $sum){
	print STDERR "Test succeeded\n" ;
}
else{
	print STDERR "Test failed ($shared_jvm_test::t::i != $sum)\n" ;
}


sub do_child {
	my $i = shift ;

	Inline::Java::reconnect_JVM() ;

	my $t = new shared_jvm_test::t() ;
	my $j = 0 ;
	for ( ; $j <= $i ; $j++){
		$t->incr_i() ;
	}
	exit ;
}


__DATA__

__Java__


import java.util.* ;

class t {
	static public int i = 0 ;

	public t(){
	}

	public void incr_i(){
		i++ ;
	}
}