继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

多线程,synchronized

小泡泡
关注TA
已关注
手记 43
粉丝 51
获赞 617

不论方法有多少层的调用,都是在main线程下执行的,也就是说是单线程应用

不足:
程序的执行效率低

如何提高程序的执行效率呢?多线程模式的应用程序

在java中,有一个专属的类Thread,来表示线程的概念

类Thread 是程序中的执行线程
Java 虚拟机允许应用程序并发地运行多个执行线程

什么叫并发:

如何创建多线程的应用呢?
有两种形式:
A:继承Thread类,并重写run()方法,然后创建该子类的对象,之后在子类的对象上面调用start()方法
B:实现Runnable接口,并重写run()方法,然后创建一个Thread对象,并将刚刚创建的类型的对象(实例)作为参数传递,之后在Thread的对象上面调用start()方法
举例:

线程的名字的问题
setName(String):来设置线程的名字
getName():获取线程名字

优先级的问题:
setPriority(int):设置线程优先级
getPriority():获取线程优先级
默认线程的优先级为5,最大为10,最小为1;数字越大优先级越高
public static final int MAX_PRIORITY 10
public static final int MIN_PRIORITY 1
public static final int NORM_PRIORITY 5

睡觉的问题:
static void sleep(long millis) :在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响

步骤:
1:继承Thread类
2:重写run()方法
3:创建子类对象
4:通过子类对象的start()启动子线程

B:实现Runnable接口,并重写run()方法,然后创建一个Thread对象,并将刚刚创建的类型的对象(实例)作为参数传递,之后在Thread的对象上面调用start()方法

建议:多用第二种,因为 工作和线程是分开的,实现上面更灵活

步骤:
1:创建自定义类,实现Runnable接口
2:重写run()方法
3:创建一个Thread类的对象,并把自定义类型的实例(对象)作为Thread类的构造方法的参数传递
4:执行Thread类的对象的start()启动线程

新的 关键字 :synchronized 格式
synchronized(对象){
// ... 很多语句,可以理解为被synchronized包裹起来的代码块,是原子性的操作
}
// 我们可以认为 这里的对象,就像一把锁

打开App,阅读手记
4人推荐
发表评论
随时随地看视频慕课网APP