Java——多线程总结

来源:互联网 发布:玄空排盘软件 编辑:程序博客网 时间:2024/06/08 05:31
/*class MyThread extends Thread{    public void run(){        try{            Thread.currentThread().sleep(3000);        }catch(InterruptedException e){        }        System.out.println("MyThread running");    }}public class ThreadTest{    public static void main(String[] args){        MyThread t = new MyThread();        t.run();        t.start();        System.out.println("Thread Test");    }}*//*MyThread t = new MyThread();创建了一个子线程,t.run();调用run()方法就是一个普通的方法调用执行Thread.currentThread().sleep(3000);因为当前线程是主线程,所以主线程睡3秒,睡够3秒打印"MyThread running",然后主线程启动子线程,一种可能是主线程仍然持有CPU,主线程打印"Thread Test",主线程结束,然后子线程得到CPU,子线程先睡3秒,然后打印"MyThread running",另一种可能是子线程立刻得到CPU,子线程先睡3秒,在子线程睡得时候主线程得到CPU,主线程打印"Thread Test",然后子线程睡够三秒,打印"MyThread running"*/class test{    public static void main(String[] args){        //使用匿名内部类创建线程        //创建了一个Thread类的子类对象        new Thread(){            public void run(){            }        }.start();        //创建线程的第二种方式        new Thread(new Runnable()){            public void run(){            }        }        Runnable r = new Runnable(){            public void run(){            }        };        new Thread(r).start();    }}/*1、生产者消费者:使用while()替代if,让线程被唤醒后先去判断标记使用notifyAll()来唤醒所有线程,防止出现死锁2、jdk1.5多线程的实现方式Lock:    Lock lock = new ReentrantLock();    lock.lock();        需要写在同步代码块中的代码    lock.unlock();    //唤醒对方的线程则创建两个Condition对象    Condition pro = lock.newCondition();    Condition con = lock.newCondition();    con.await();    con.signal();    con.signalAll();3、多生产多消费4、线程的停止5、守护线程 setDaemon(boolean)6、join()可以让线程优先持有CPU*/
原创粉丝点击