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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2018-6-27 20:52  /  2922 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


林焕

1.Thread继承类:1.自定义类继承Thread;
               2.重写自定义类中run()方法;
               3.创建自定义类的对象;
               4.自定义类对象调用start()方法开启线程;

Runnable实现类:1.定义实现类实现Runnable;
                2.重写实现类中run()方法;
                3.创建实现类的对象;
                4.实现类的对象作为参数创建Thread对象;
                5.Thread对象调用start()方法开启线程;

2.继承Thread类体现了继承体系中的单继承性;
  实现Runnable接口可以让线程实现资源共享;

实现Runnable接口优势:1.可以实现多线程资源共享;
                     2.避免了单继承的局限性;
                     3.将线程任务与线程对象进行分离,解耦,增加了程序的健壮性;
                     4.线程池中只能使用Runnable Callable;

3.线程安全问题的产生是指:多线程程序中多线程共享同一资源,并对资源有写的操作,产生了数据不同步现象;
   解决线程安全有3种方式:1.同步方法块;
                         2.同步方法;
                         3.lock锁;

4.sleep()方法和wait()方法的区别:

sleep()方法:进入“休眠” 等待时间到了就结束,在等待时间内的状态就是计时等待状态;

wait()方法:一:wait()不传递时间参数,进入无限等待只能依靠另一个同步线程完成唤醒;
           二:wait()传递时间参数,进入计时等待;如果在这段时间内另一个同步线程完成唤醒,那么就唤醒;否则那么就等到这段时间结束就醒了;

5.线程状态:1.new(新建):新建后进入runnable状态;

        2.runnable(可运行):拿到锁对象后线程执行;

        3.waiting(等待):等待其他线程调用notify()方法唤醒进入锁阻塞状态,否则一直处于等待状态;

        4.timed waiting(时间等待):等待时间结束,进入锁阻塞状态;
                                  或者其他线程调用notify()方法使其进入锁阻塞状态;

        5.blocked(锁阻塞):线程获得锁对象后执行该线程;

        6.teminated(结束):
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马