java基础知识问答:线程组,死锁

问题1:
Thread的toString方法描述:返回该线程的字符串表示形式,包括线程名称、优先级和线程组。请问什么叫“线程组”?
问题2:
求一个死锁的demo,越简单越好

线程组:[url]http://caterpillar.onlyfun.net/Gossip/JavaGossip-V2/ThreadGroup.htm[/url]
列锁例子:[url]http://www.cnblogs.com/linjiqin/archive/2011/04/11/2013083.html[/url]
希望对你有帮助

[code="java"]
public class DeadLock {

static Object lock1 = new Object();
static Object lock2 = new Object();

static class Thread1 extends Thread {
    @Override
    public void run() {
        System.out.println("t1:aquiring lock1");
        synchronized (lock1) {
            System.out.println("t1:aquried lock1");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            System.out.println("t1:aquiring lock2");
            synchronized (lock2) {
                System.out.println("t1:aquried lock2");
            }
        }
    }
}

static class Thread2 extends Thread {
    @Override
    public void run() {
        System.out.println("t2:aquiring lock2");
        synchronized (lock2) {
            System.out.println("t2:aquried lock2");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            }
            System.out.println("t2:aquiring lock1");
            synchronized (lock1) {
                System.out.println("t2:aquired lock1");
            }
        }
    }
}

public static void main(String[] args) throws InterruptedException {
    Thread t1 = new Thread1();
    Thread t2 = new Thread2();
    t1.start();
    t2.start();
    t1.join();
    t2.join();
}

}
[/code]

输出:

t1:aquiring lock1
t1:aquried lock1
t2:aquiring lock2
t2:aquried lock2
t1:aquiring lock2
t2:aquiring lock1

死锁看这里:
[url]http://ifeve.com/deadlock/[/url]
[url]http://ifeve.com/deadlock-prevention/[/url]
[url]http://ifeve.com/reentrance-lockout/[/url]
[url]http://ifeve.com/nested-monitor-lockout/[/url]