多个线程操作同一个方法或变量时常常出现错误,要保证每个线程都正常运行就要通过加锁,每次只有一个能够拿到锁通过。如下:

 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 的话,运行结果如图。

不再是依次打印出名字,该关键字还可以加在代码块里。一般为了性能,我们要减少同步执行的代码数量(可以用同步代码块就不用同步方法);

最新文章

  1. cf555b
  2. [云] 1、云服务器——从ILP\DLP\TLP谈起
  3. static,静态关键字的详解
  4. js 闭包理解
  5. UBUNTU查看软件版本
  6. Swift学习笔记八:枚举
  7. window下配置ssh key
  8. SQL Server 性能优化
  9. angularjs model.service vs provider vs factory?
  10. Android---&gt;LinearLayout页面布局方式
  11. robotframework自动化系列:删除操作流程以及总结
  12. 初识Hibernate的主配置和映射配置
  13. 【开发技术】视频URL采集
  14. 关于Java面试
  15. Winfon 页签切换及窗体控件自适应
  16. Easyui中 messager.alert 后某文本框获得焦点
  17. Flask 微博三方登录
  18. Java虚拟机学习 - JDK可视化监控工具 ( 7 )
  19. ICDAR2017 Competition on Reading Chinese Text in the Wild(RCTW-17) 介绍
  20. 《JavaWeb从入门到改行》JSP+EL+JSTL大杂烩汤

热门文章

  1. CF723E(欧拉回路)
  2. 从头开始学Android之(一)——— Android架构
  3. 【Nginx】ngx_event_core_module事件模块
  4. topcoder srm 552
  5. [RxJS] Use `lift` to Connect a `source` to a `subscriber` in RxJS
  6. Office EXCEL 复制粘贴 变成 #value,#REF!,#DIV怎么办
  7. Office WORD里插入图片,嵌入型只能显示一半怎么办
  8. 浅谈asp.net通过本机cookie仿百度(google)实现搜索input框自己主动弹出搜索提示
  9. 【JAVA】java中Future、FutureTask的使用
  10. C项目实践--俄罗斯方块(2)