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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2018-12-26 18:21  /  3292 人查看  /  31 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1.多线程的实现有几种方式?实现步骤分别是怎样的?

答:继承thread类和实现Runnable接口俩种

继承thread方法:
1.先继承thread方法
2.重写run方法,
3.在测试类中创建自定义类的类对象
4.对象.start开启线程

实现Runnable接口方法:
1.先实现Runnable接口
2.重写run方法。
3.在测试类中创建自定义类的类对象
4.创建thread对象把自定义类的类对象放进thread对象中
5.thread对象.start方法开启线程

2.继承Thread类和实现Runnable接口有啥区别?实现Runnable接口的优势体现在哪里?
区别:

1.继承Thread类是继承thread类,实现Runnable类是实现Runnable接口,开启线程相比比较繁琐

2.继承Thread类线程代码块存放在Thread子类的run方法中
   实现Runnable,线程代码存放在接口的子类的run方法中,可以被多实现。

实现Runnable接口的优势:

1.继承的位置只有一个,接口可以实现多个接口。
2.可以多个程序的线程共享同一个资源
3.thread耦合性比较高,Runnable接口解耦效果好,灵活性好

3.线程安全问题时怎么产生的?如何解决线程安全问题,有哪几种方式?
原因:由于多个程序在同步运行的过程中,限制条件只会对其中的一条产生限制,使其停止,但是其他线程没有收到限制停止的指令,就会可能同时运行同一·段代码,出现值相同的问题,这就是线程安全问题

一共有3种方法
1.同步代码块:创建 object 的同步锁对象
                      synchorinized(相同同步锁){共同执行的方法体}

2.静态方法: synchorinized(类名.class控制){共同执行的方法体}

3.lock方法: 创建 lock对象
                    lock.lock方法开启同步锁
                   {共同执行的方法体}
                    lock.unlick方法释放同步锁
4.sleep()方法和wait()方法的区别?
区别:
1.sleep在使用时需要设定时间,自己醒来
  wait可以自己设定时间自己醒来,也可以通过别人的nitify方法来唤醒他

2.sleep方法是通过thread的类来调用
   wait方法要通过本类的唯一锁对象来调用。

3.sleep在同步过程中睡眠同步锁并不会归还。
  wait方法在同步过程中冻结,同步锁归还
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马