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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 厦门校区   /  2019-5-5 16:54  /  2412 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.多线程的实现有几种方式?实现步骤分别是怎样的?
有两种实现的方式
第一种:①定义一个类MyThread继承Thread类
-
              ②在MyThread类中重写run()方法
-
              ③创建MyThread类的对象
-
              ④启动线程

第二种:①定义一个类MyRunnable实现Runnable接口
-
              ②在MyRunnable类中重写run()方法

              ③创建MyRunnable类的对象

              ④创建Thread类的对象,把MyRunnable对象作为构造方法的参数

              ⑤启动线程


2.继承Thread类和实现Runnable接口有啥区别?实现Runnable接口的优势体现在哪里?
好处:①将线程任务和线程对象分离,进行解耦。可以实现多个线程共享同一资源;
          ②不占用继承位

3.线程安全问题时怎么产生的?如何解决线程安全问题,有哪几种方式?
产生原因:线程执行的随机性导致的;
方式:①同步代码块:锁对象是任意对象,但是必须保证多个线程锁对象是同一个
          ②同步方法
        普通同步方法
                锁对象是this
        静态同步方法
                类名.class
          ③lock锁
        手动的开启锁和释放锁,释放锁需要写在finally代码块中

4.sleep()方法和wait()方法的区别?
①sleep调用之后会放弃CPU执行权,但是不会放弃锁对象;Wait  CPU执行权和锁对象都放弃
②sleep方法到了时间自动苏醒,去抢夺CPU;wait方法没有线程唤醒不会自己醒

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马