import java.io.*; public class Test extends Thread { static int total_1 = 0, total_2 = 0; /* main method */ public static void main (String[] args) throws IOException { int i1, k = 0; // 自分自身のオブジェクト Test test = new Test(); // Threadオブジェクトの生成 Thread t1 = new Thread(test, "***"); t1.setPriority(6); // プライオリティを上げる Thread t2 = new Thread(test, "---"); // スレッドの実行開始 t1.start(); t2.start(); // スレッドの状況のチェック while (t1.isAlive() || t2.isAlive()) { k++; System.out.println("k " + k + " " + Math.sqrt((double)k)); } // スレッドの終了後の処理 System.out.println(" 終了しました(total_1 " + total_1 + " total_2 " + total_2 + ")"); } /* スレッドの実行内容の記述(スレッドがスタートすると, このメソッドに記述されたことが実行されます) スレッド間の同期をとるためにsynchronized指定が必要 同期をとれば,あるスレッドの実行中に他のスレッドが割り込むことはない */ public synchronized void run() { int i1; System.out.println(Thread.currentThread().getName() + " が実行中"); if (Thread.currentThread().getName().equals("***")) { for (i1 = 0; i1 < 100; i1++) { total_1++; System.out.println("total_1 " + total_1); if (total_1 == 50) { try { this.wait(); // スレッドを待ち状態にする } catch (InterruptedException e) {} } } } if (Thread.currentThread().getName().equals("---")) { for (i1 = 0; i1 < 100; i1++) { total_2++; System.out.println("total_2 " + total_2); } this.notify(); // 待ち状態のスレッドを元に戻す } } }
*** が実行中 total_1 1 total_1 2 total_1 3 total_1 4 total_1 5 total_1 6 total_1 7 total_1 8 total_1 9 total_1 10 total_1 11 total_1 12 total_1 13 total_1 14 total_1 15 total_1 16 total_1 17 total_1 18 total_1 19 total_1 20 total_1 21 total_1 22 total_1 23 total_1 24 total_1 25 total_1 26 total_1 27 total_1 28 total_1 29 total_1 30 total_1 31 total_1 32 total_1 33 total_1 34 total_1 35 total_1 36 k 1 1.0 total_1 37 k 2 1.4142135623730951 total_1 38 k 3 1.7320508075688772 total_1 39 k 4 2.0 total_1 40 k 5 2.23606797749979 total_1 41 k 6 2.449489742783178 total_1 42 k 7 2.6457513110645907 total_1 43 k 8 2.8284271247461903 total_1 44 k 9 3.0 total_1 45 k 10 3.1622776601683795 total_1 46 k 11 3.3166247903554 total_1 47 k 12 3.4641016151377544 total_1 48 k 13 3.605551275463989 total_1 49 k 14 3.7416573867739413 total_1 50 k 15 3.872983346207417 k 16 4.0 k 17 4.123105625617661 k 18 4.242640687119285 k 19 4.358898943540674 k 20 4.47213595499958 --- が実行中 k 21 4.58257569495584 total_2 1 k 22 4.69041575982343 total_2 2 k 23 4.795831523312719 total_2 3 k 24 4.898979485566356 total_2 4 k 25 5.0 total_2 5 k 26 5.0990195135927845 total_2 6 k 27 5.196152422706632 total_2 7 k 28 5.291502622129181 total_2 8 k 29 5.385164807134504 total_2 9 k 30 5.477225575051661 total_2 10 k 31 5.5677643628300215 total_2 11 k 32 5.656854249492381 total_2 12 k 33 5.744562646538029 total_2 13 k 34 5.830951894845301 total_2 14 k 35 5.916079783099616 total_2 15 k 36 6.0 total_2 16 k 37 6.082762530298219 total_2 17 k 38 6.164414002968976 total_2 18 k 39 6.244997998398398 total_2 19 k 40 6.324555320336759 total_2 20 k 41 6.4031242374328485 total_2 21 k 42 6.48074069840786 total_2 22 k 43 6.557438524302 total_2 23 k 44 6.6332495807108 total_2 24 k 45 6.708203932499369 total_2 25 k 46 6.782329983125268 total_2 26 k 47 6.855654600401044 total_2 27 k 48 6.928203230275509 total_2 28 k 49 7.0 total_2 29 k 50 7.0710678118654755 total_2 30 k 51 7.14142842854285 total_2 31 k 52 7.211102550927978 total_2 32 k 53 7.280109889280518 total_2 33 k 54 7.3484692283495345 total_2 34 k 55 7.416198487095663 total_2 35 total_2 36 k 56 7.483314773547883 total_2 37 k 57 7.54983443527075 total_2 38 k 58 7.615773105863909 k 59 7.681145747868608 total_2 39 k 60 7.745966692414834 k 61 7.810249675906654 k 62 7.874007874011811 k 63 7.937253933193772 k 64 8.0 k 65 8.06225774829855 total_2 40 k 66 8.12403840463596 total_2 41 k 67 8.18535277187245 total_2 42 k 68 8.246211251235321 total_2 43 k 69 8.306623862918075 total_2 44 k 70 8.366600265340756 total_2 45 k 71 8.426149773176359 total_2 46 k 72 8.48528137423857 total_2 47 k 73 8.54400374531753 total_2 48 k 74 8.602325267042627 total_2 49 k 75 8.660254037844387 total_2 50 k 76 8.717797887081348 total_2 51 k 77 8.774964387392123 total_2 52 k 78 8.831760866327848 total_2 53 k 79 8.888194417315589 total_2 54 k 80 8.94427190999916 total_2 55 k 81 9.0 total_2 56 k 82 9.055385138137417 total_2 57 k 83 9.1104335791443 total_2 58 k 84 9.16515138991168 total_2 59 k 85 9.219544457292887 total_2 60 k 86 9.273618495495704 total_2 61 k 87 9.327379053088816 total_2 62 k 88 9.38083151964686 total_2 63 k 89 9.433981132056603 total_2 64 k 90 9.486832980505138 total_2 65 k 91 9.539392014169456 total_2 66 k 92 9.591663046625438 total_2 67 k 93 9.643650760992955 total_2 68 k 94 9.695359714832659 total_2 69 k 95 9.746794344808963 total_2 70 k 96 9.797958971132712 total_2 71 k 97 9.848857801796104 total_2 72 k 98 9.899494936611665 total_2 73 k 99 9.9498743710662 total_2 74 k 100 10.0 total_2 75 k 101 10.04987562112089 total_2 76 k 102 10.099504938362077 total_2 77 k 103 10.14889156509222 total_2 78 k 104 10.198039027185569 total_2 79 k 105 10.246950765959598 total_2 80 k 106 10.295630140987 total_2 81 k 107 10.344080432788601 total_2 82 k 108 10.392304845413264 total_2 83 k 109 10.44030650891055 total_2 84 k 110 10.488088481701515 total_2 85 k 111 10.535653752852738 total_2 86 k 112 10.583005244258363 total_2 87 k 113 10.63014581273465 total_2 88 k 114 10.677078252031311 total_2 89 k 115 10.723805294763608 total_2 90 k 116 10.770329614269007 total_2 91 k 117 10.816653826391969 total_2 92 k 118 10.862780491200215 total_2 93 k 119 10.908712114635714 total_2 94 k 120 10.954451150103322 total_2 95 k 121 11.0 total_2 96 k 122 11.045361017187261 total_2 97 k 123 11.090536506409418 total_2 98 k 124 11.135528725660043 total_2 99 k 125 11.180339887498949 total_2 100 k 126 11.224972160321824 total_1 51 k 127 11.269427669584644 total_1 52 k 128 11.313708498984761 total_1 53 k 129 11.357816691600547 total_1 54 k 130 11.40175425099138 total_1 55 k 131 11.445523142259598 total_1 56 k 132 11.489125293076057 total_1 57 k 133 11.532562594670797 total_1 58 k 134 11.575836902790225 total_1 59 k 135 11.61895003862225 total_1 60 k 136 11.661903789690601 total_1 61 k 137 11.704699910719626 total_1 62 k 138 11.74734012447073 total_1 63 k 139 11.789826122551595 total_1 64 total_1 65 total_1 66 total_1 67 total_1 68 total_1 69 total_1 70 total_1 71 total_1 72 total_1 73 total_1 74 k 140 11.832159566199232 total_1 75 k 141 11.874342087037917 total_1 76 total_1 77 total_1 78 total_1 79 k 142 11.916375287812984 total_1 80 total_1 81 total_1 82 total_1 83 total_1 84 k 143 11.958260743101398 total_1 85 k 144 12.0 total_1 86 k 145 12.041594578792296 total_1 87 k 146 12.083045973594572 total_1 88 k 147 12.12435565298214 total_1 89 k 148 12.165525060596439 total_1 90 k 149 12.206555615733702 total_1 91 k 150 12.24744871391589 total_1 92 k 151 12.288205727444508 total_1 93 k 152 12.328828005937952 total_1 94 k 153 12.36931687685298 total_1 95 k 154 12.409673645990857 total_1 96 k 155 12.449899597988733 total_1 97 k 156 12.489995996796797 total_1 98 k 157 12.529964086141668 total_1 99 k 158 12.569805089976535 total_1 100 k 159 12.609520212918492 終了しました(total_1 100 total_2 100)