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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 814506914 中级黑马   /  2016-6-1 22:10  /  760 人查看  /  7 人回复  /   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

评分

参与人数 1黑马币 +6 收起 理由
对面的1 + 6 赞一个!

查看全部评分

7 个回复

倒序浏览
其实还有第三种方法,利用线程池新建
回复 使用道具 举报
hero_king 发表于 2016-6-1 22:14
其实还有第三种方法,利用线程池新建

虚,别说出来{:3_57:}
回复 使用道具 举报
顶贴是一种美德
回复 使用道具 举报

其实还有第三种方法,利用线程池新建
回复 使用道具 举报
其实还有第三种方法,利用线程池新建
回复 使用道具 举报
谢谢分享,很有用的,马上学到
回复 使用道具 举报
谢谢分享 !!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马