2014-07-18 日志

45 篇文章 0 订阅
1:多线程(理解)
(1)多线程:一个应用程序有多条执行路径。
线程:就是应用程序的执行路径。执行单元。
进程:正在执行的应用程序。
单线程:一个应用程序只有一条执行路径。


举例:
迅雷下载。


吃饭案例:
单进程单线程:一个人吃一桌菜
单进程多线程:多个人吃一桌菜
(2)Java中如何实现多线程(掌握 代码有空就写一遍)
A:继承Thread类
a:自定义类MyThread继承自Thread类
b:重写run()方法
c:创建MyThread类的对象
d:调用start()方法
B:实现Runnable接口
a:自定义类MyRunnable实现Runnable接口
b:重写run()方法
c:创建MyRunnable类的对象
d:创建Thread类的对象,把MyRunnable类的对象作为构造参数传递
e:调用start()方法
(3)面试题:
A:run()方法的作用?
里面封装的代码是需要被线程执行的。
B:run()和start()的区别?
run():封装了被线程执行的代码,但是直接调用却是普通方法的调用。
start():启动线程,并由jvm调用该线程的run()方法。
C:线程随机性的原理
CPU做着高效的切换,多个程序抢CPU的资源来执行。
D:线程的生命周期
新建,就绪,运行,阻塞,死亡
(4)卖票程序。
A:继承Thread类
B:实现Runnable接口
(5)线程安全问题:
买票的过程中,出现了
同一张票卖出了多次:CPU的每一次执行是一个原子性的操作。
出现了负数票:线程运行的随机性
(6)如何解决线程安全问题:
A:同步代码块
synchronized(对象) {
被同步的代码。
}

对象:任意对象。
被同步的代码:
导致线程安全问题代码。
如何分析呢,请参照线程安全问题的原因。


B:同步方法
把同步关键字加在方法上。


锁对象是this


注意:
静态方法的锁对象是当前类的class文件对象。


(7)如何分析代码是否有线程安全问题:
A:多线程程序
B:有共享数据
C:共享数据被多条语句操作


2:单例设计模式(理解)
(1)保证类在内存中只有一个对象。
(2)怎么保证的呢?
A:构造私有
B:本身提供一个对象。
C:提供静态公共方式访问
(3)两种方式:
A:饿汉式
class Student {
private Student() {}


private static Student s = new Student();


public static Student getStudent() {
return s;
}
}


B:懒汉式
class Student {
private Student() {}


private static Student s = null;


public synchronized static Student getStudent() {
if(s == null) {
s = new Student();
}
return s;
}
}


注意:
Runtime类的源码中也是单例模式。并且是饿汉式。
开发我们用饿汉式子。
面试懒汉式。


懒汉式:
A:延迟加载 

B:线程安全问题


选择题竟然少写了一道题的答案。序列化和反序列化的简答题打错了。98分。


晚上坐公交,旁边一个小青年接了什么总的电话,这个卖萌撒娇,称兄道弟的,隔几秒还要甩下头发。什么时代这打工的和老总的关系这么亲切了?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值