LockSupport

LockSupport 是一个非常方便实用的线程阻塞工具,它可以在线程内任意位置让线程阻塞,

LockSupport 的静态方法park()可以阻塞当前线程,类似的还有parkNanos(),parkUntil()等方法,它们实现了一个限时的等待.

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
public class LockSupportDemo {
public static Object u=new Object();
static ChangeObjectThread t1 =new ChangeObjectThread("t1");
static ChangeObjectThread t2 =new ChangeObjectThread("t2");
public static class ChangeObjectThread extends Thread
{
public ChangeObjectThread(String name)
{
super.setName(name);
}
public void run()
{
synchronized(u)
{
System.out.println("in "+getName());
LockSupport.park(); //让当前线程阻塞
}
}
}
public static void main(String[] args) throws Exception
{
t1.start();
Thread.sleep(1000);
t2.start();
System.out.println("123");
LockSupport.unpark(t1); //唤醒t1线程
LockSupport.unpark(t2); // 唤醒t2线程.
t1.join();
t2.join();
}
}
1
2
3
in t1
123
in t2