1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*第一题: 多线程题, 打印 
T1:1
T2:2
T3:3
T1:4
T2:5
T3:6
….
*/

// MultiThreadDemo.java
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class MultiThreadDemo extends Thread {
 int val;
 private Lock lock;

 public MultiThreadDemo(int i) {
  val = i;
  lock = new ReentrantLock();
 }

 public void run() {
  lock.lock();
   
   while (val < 100) { 
   int name = val % 3 == 0 ? 3 : val % 3;
   System.out.println("T" + name + " : " + val++);
  }
  lock.unlock();

 }

}


// MultiThreadDemoTest.java
public class MultiThreadDemoTest {

 public static void main(String[] args) throws InterruptedException {
  // TODO Auto-generated method stub
  int val = 1;
  MultiThreadDemo t1 = new MultiThreadDemo(val);
  val++;
  MultiThreadDemo t2 = new MultiThreadDemo(val);
  val++;
  MultiThreadDemo t3 = new MultiThreadDemo(val);
  val++;

  t1.start();
  t1.join();
  t2.start();
  t2.join();
  t3.start();
  t3.join();

 }

}