传统的线程互斥技术:Synchronized关键字
2024-09-07 13:59:44
多个线程操作同一个方法或变量时常常出现错误,要保证每个线程都正常运行就要通过加锁,每次只有一个能够拿到锁通过。如下:
package cn.sp.thread; /**
* Created by 2YSP on 2017/10/19.
*/
public class TraditionalThreadSynchronized { public static void main(String[] args) {
new TraditionalThreadSynchronized().init();
} private void init(){
final Outputer outputer = new Outputer();
new Thread(() ->{
while (true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
outputer.outPut("wangxiaoxiao");
}
}).start(); new Thread(() ->{
while (true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
outputer.outPut("lilianjie");
}
}).start();
} class Outputer{
public synchronized void outPut(String name){//synchronized通过加锁使两个线程互斥
int len = name.length();
for(int i=0;i<len;i++){
System.out.print(name.charAt(i));
}
//打印出字符串后换行
System.out.println();
}
}
}
如果没有synchronized 的话,运行结果如图。
不再是依次打印出名字,该关键字还可以加在代码块里。一般为了性能,我们要减少同步执行的代码数量(可以用同步代码块就不用同步方法);
最新文章
- cf555b
- [云] 1、云服务器——从ILP\DLP\TLP谈起
- static,静态关键字的详解
- js 闭包理解
- UBUNTU查看软件版本
- Swift学习笔记八:枚举
- window下配置ssh key
- SQL Server 性能优化
- angularjs model.service vs provider vs factory?
- Android--->;LinearLayout页面布局方式
- robotframework自动化系列:删除操作流程以及总结
- 初识Hibernate的主配置和映射配置
- 【开发技术】视频URL采集
- 关于Java面试
- Winfon 页签切换及窗体控件自适应
- Easyui中 messager.alert 后某文本框获得焦点
- Flask 微博三方登录
- Java虚拟机学习 - JDK可视化监控工具 ( 7 )
- ICDAR2017 Competition on Reading Chinese Text in the Wild(RCTW-17) 介绍
- 《JavaWeb从入门到改行》JSP+EL+JSTL大杂烩汤
热门文章
- CF723E(欧拉回路)
- 从头开始学Android之(一)——— Android架构
- 【Nginx】ngx_event_core_module事件模块
- topcoder srm 552
- [RxJS] Use `lift` to Connect a `source` to a `subscriber` in RxJS
- Office EXCEL 复制粘贴 变成 #value,#REF!,#DIV怎么办
- Office WORD里插入图片,嵌入型只能显示一半怎么办
- 浅谈asp.net通过本机cookie仿百度(google)实现搜索input框自己主动弹出搜索提示
- 【JAVA】java中Future、FutureTask的使用
- C项目实践--俄罗斯方块(2)