A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© aiheima 中级黑马   /  2016-1-7 22:00  /  340 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
                }
        }
}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马