; ; Output created by JasminView on Jul 8, 2002 ; mailto:shawn@pobox.com ; Copyright (c) 1997-Present Shawn Silverman ; ; Jasmin can be found at: ; http://www.cat.nyu.edu/meyer/jasmin/ ; ; Classfile version: ; major: 45 ; minor: 3 .source MultiIncB.java .class MultiIncB .super java/lang/Thread .field private c LCounter; .field private r Ljava/util/Random; .field private id I ; >> METHOD 1 << .method (LCounter;I)V .limit stack 3 .limit locals 3 ;---- .line 10 aload_0 invokespecial java/lang/Thread/()V .line 11 aload_0 aload_1 putfield MultiIncB/c LCounter; .line 12 aload_0 iload_2 putfield MultiIncB/id I .line 13 aload_0 new java/util/Random dup invokespecial java/util/Random/()V putfield MultiIncB/r Ljava/util/Random; .line 14 return .end method ; >> METHOD 2 << .method waiting()V .limit stack 2 .limit locals 2 ;---- .line 17 Label1: aload_0 getfield MultiIncB/r Ljava/util/Random; bipush 100 invokevirtual java/util/Random/nextInt(I)I i2l invokestatic java/lang/Thread/sleep(J)V Label2: goto Label4 Label3: astore_1 .line 18 Label4: return ;---- .catch java/lang/Exception from Label1 to Label2 using Label3 .end method ; >> METHOD 3 << .method inc()V .limit stack 3 .limit locals 4 ;---- .line 21 aload_0 getfield MultiIncB/c LCounter; astore_1 aload_1 monitorenter .line 23 Label1: aload_0 getfield MultiIncB/c LCounter; invokevirtual Counter/val()I istore_2 .line 24 aload_0 invokevirtual MultiIncB/waiting()V .line 25 aload_0 getfield MultiIncB/c LCounter; iload_2 iconst_1 iadd invokevirtual Counter/set(I)V aload_1 monitorexit goto Label3 .line 26 Label2: astore_3 aload_1 monitorexit aload_3 athrow .line 27 Label3: return ;---- .catch all from Label1 to Label2 using Label2 .end method ; >> METHOD 4 << .method public run()V .limit stack 2 .limit locals 2 ;---- .line 30 iconst_0 istore_1 goto Label2 .line 32 Label1: aload_0 invokevirtual MultiIncB/inc()V .line 33 aload_0 invokevirtual MultiIncB/waiting()V .line 30 iinc 1 1 Label2: iload_1 bipush 10 if_icmplt Label1 .line 35 getstatic java/lang/System/out Ljava/io/PrintStream; aload_0 getfield MultiIncB/c LCounter; invokevirtual Counter/val()I invokevirtual java/io/PrintStream/println(I)V .line 36 return .end method ; >> METHOD 5 << .method public static main([Ljava/lang/String;)V .limit stack 4 .limit locals 2 ;---- .line 39 new Counter dup invokespecial Counter/()V astore_1 .line 40 new MultiIncB dup aload_1 iconst_1 invokespecial MultiIncB/(LCounter;I)V invokevirtual java/lang/Thread/start()V .line 41 new MultiIncB dup aload_1 iconst_2 invokespecial MultiIncB/(LCounter;I)V invokevirtual java/lang/Thread/start()V .line 42 new MultiIncB dup aload_1 iconst_3 invokespecial MultiIncB/(LCounter;I)V invokevirtual java/lang/Thread/start()V .line 43 return .end method