为了账号安全,请及时绑定邮箱和手机立即绑定

多线程,synchronized

标签:
Java

不论方法有多少层的调用,都是在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包裹起来的代码块,是原子性的操作
}
// 我们可以认为 这里的对象,就像一把锁

点击查看更多内容
4人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件工程师
手记
粉丝
51
获赞与收藏
617

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消