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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© adminn 中级黑马   /  2016-5-31 23:03  /  243 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.多线程的两种实现方式:
                1.继承Thread类:
                        1.定义一个类,继承Thread类
                        2.重写run方法,把需要在多线程中执行代码写在run方法中
                        3.创建该类对象,调用start方法,启动线程

                2.实现Runnable接口:
                        1.定义一个类实现Runnable接口
                        2.重写run方法,把需要在多线程中执行代码写在run方法中
                        3.创建该类对象
                        4.把该类对象作为参数传递给Thread类的构造方法, 创建Thread类的对象
                        5.调用Thread对象中的start方法,启动线程,该线程会执行run方法中的内容.

        2.两者的区别:
                1.一个是继承Thread类,代码简单,不能再继承其他类.
                2.另一个是实现Runnable接口,代码复杂,扩展性强.

        3.Thread类中常用的方法:
                getName()   //获取线程的名字
                setName()   //设置线程的名字
                (掌握)currentThread() //获取当前的线程对象(静态方法,类名直接调用)
                (掌握)sleep()     //让线程休眠(静态方法,类名直接调用)
                setDaemon() //当传入的参数是true时,该线程被设置为守护线程.(这个线程在所有线程结束后自动结束,不需要执行完所有内容,但是,如果在其他线程没有结束前,已经执行完所有代码了,也会结束.)

                (掌握)join()    //插入一个线程,让这个线程优先执行,执行完之后再让别的线程执行.
                yield()   //礼让线程.让出CPU给别的线程,但实际没什么效果.(了解)
                setPriority(int) //设置线程优先级,1-10,数字越大执行次数越多.(了解)

        4.同步:
                1.同步代码块:
                        synchronized(锁对象){ ... }

                        1.锁对象可以是任意对象,但是必须是同一个对象
                        2.同步代码块必须是在多线程中才有意义.

                2.同步方法:       
                        1.非静态同步方法的锁对象:this
                        2.静态的同步方法的锁对象是: 当前所在的类的字节码对象
               
                3.什么时候使用同步代码块,什么时候使用同步方法?
                        1.如果一个方法中,所有的内容都是需要同步的,可以使用同步方法.(能使用同步方法的地方都可以使用同步代码块)
                        2.同步方法的锁对象是固定的,所以如果需要使用别的对象作为锁对象,就不能使用同步方法.


                4.卖火车票的案例(两种实现方式)

                5.死锁:(不要写这样的代码)
                        产生的原因:
                                同步代码块嵌套.

                6.以前学过的同步的类:(了解)
                        Hashtable  Vector  StringBuffer

0 个回复

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