JDK1.5的新特性互斥锁
* 1.同步
* 使用ReentrantLock类的lock()和unlock()方法进行同步
* 2.通信
* 使用ReentrantLock类的newCondition()方法可以获取Condition对象
* 需要等待的时候使用Condition的await()方法, 唤醒的时候用signal()方法
* 不同的线程使用不同的Condition, 这样就能区分唤醒的时候找哪个线程了
六、线程组的概述和使用(了解)
A:线程组概述
* Java中使用ThreadGroup来表示线程组,它可以对一批线程进行分类管理,Java允许程序直接对线程组进行控制。
B:默认情况下,所有的线程都属于主线程组。
* public final ThreadGroup getThreadGroup()//通过线程对象获取他所属于的组
* public final String getName()//通过线程组对象获取他组的名字
C:我们也可以给线程设置分组
1,ThreadGroup(String name) 创建线程组对象并给其赋值名字
2,创建线程对象
3,Thread(ThreadGroup?group, Runnable?target, String?name)
4,设置整组的优先级或者守护线程
案例演示:
public class Demo1 {
public static void main(String[] args) throws InterruptedException {
ThreadGroup tg = new ThreadGroup("我是一个新的线程组"); // 创建新的线程组
MyRunnable mr = new MyRunnable();// 创建Runnable的子类对象
Thread t1 = new Thread(tg, mr, "张三"); // 将线程t1放在组中
Thread t2 = new Thread(tg, mr, "李四"); // 将线程t2放在组中
System.out.println(t1.getThreadGroup().getName()); // 获取线程组名
System.out.println(t2.getThreadGroup().getName());
tg.setDaemon(true);
}
}
class MyRunnable implements Runnable {
@Override
public void run() {
for (int i = 0; i < 1000; i++) {
System.out.println(Thread.currentThread().getName() + "...." + i);
}
}
} |
|