Java基础之synchronized的讲解
博客出自:http://blog.csdn.net/liuxian13183,转载注明出处! All Rights Reserved !
关于锁,需要在特殊时刻用到,今天就来小分析一把。
public class ThreadTest extends Thread {
private int threadNo;
public ThreadTest(int threadNo) {
this.threadNo = threadNo;
}
public static void main(String[] args) throws Exception {
for (int i = 1; i < 10; i++) {
new ThreadTest(i).start();
Thread.sleep(1);
}
}
@Override
public synchronized void run() {
for (int i = 1; i < 10000; i++) {
System.out.println("No." + threadNo + ":" + i);
}
}
}
这个程序实际上是以ThreadTest对象做为锁,将run方法执行的,实际上是对每个线程都没有加锁,就像一个门有一把锁,但十个都有钥匙,所以线程执行非常乱。
view plaincopy to clipboardprint?
public class ThreadTest2 extends Thread {
private int threadNo; private String lock;
public ThreadTest2(int threadNo, String lock) {
this.threadNo = threadNo;
this.lock = lock; }
public static void main(String[] args) throws Exception {
String lock = new String("lock");
for (int i = 1; i < 10; i++) {
new ThreadTest2(i, lock).start();
Thread.sleep(1);
}
}
public void run() {
synchronized (lock) {
for (int i = 1; i < 10000; i++) {
System.out.println("No." + threadNo + ":" + i);
}
}
}
}
这个程序是对每个run方法,加一个特定的锁lock,但这个对象是所以线程共用的,就像十个人共用一个厕所的门,只能一个一个来。
关于锁的用途在于,如果拍摄一张照片,只有保存成功才能进行传输;所用保存时,先锁住;保存完毕,锁自然解开,就可以传输查看了。
尼玛呀,吐个槽,CSDN怎么搞的,我把代码贴上,总是给我居中显示,把所有格式都去掉都不行,不知道怎么搞的。
转载于:https://www.cnblogs.com/fengju/archive/2011/11/28/6174515.html
Java基础之synchronized的讲解相关推荐
- Java基础之泛型简单讲解(通俗易懂)
Java基础之泛型简单讲解(通俗易懂) 1. 前言 2. 简单例子对比理解 2.1 未使用泛型例子--ArrayList 2.2 使用泛型的例子 2.2.1 ArrayList 举例 2.2.2 Ha ...
- Java基础03:数据类型讲解
数据类型 强类型预言 要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用 弱类型预言 Java的数据类型分为两大类 基本类型(primitive type) 引用类型(reference t ...
- JAVA基础入门(4)—— 标识符、关键字和字面值
前言 在上一节中,讲到了JAVA开端的一个HelloWorld小程序,其中对代码以及一些细节的知识点做了阐述.本节将继续对JAVA基础入门知识进行讲解演示,分别对JAVA中的标识符.关键字以及字面值进 ...
- Java基础知识第一章
Java基础01:注释 注释不会被执行,是给我们写代码的人看的,书写注释是一个非常好的习惯,平时写代码一定要注意规范 注释的种类 单行注释:一般在最前面加上// public class Hello{ ...
- 【狂神说Java笔记】Java基础
Java基础01:注释 关闭 idea 后再次打开,默认打开上一次关闭时的项目 新建空项目 File --> New --> Project... Empty Project --> ...
- filter过滤器_Java过滤器Filter讲解(Java基础)
Java过滤器Filter讲解(Java基础) 双体的小伙伴们,Java过滤器Filter讲解(Java基础).初学JAVA的的学者们,今天满满的干货,跟随我一起学习吧. 超能就在这里 ...
- Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】
Java基础-String类[超详细讲解] String类的特点 String在java.lang.String包中 1:特点 (1)String类型不能被继承,因为由final修饰 (2)Strin ...
- Java基础代码语法讲解上
因为最近有多余的时间,可以码字,Java基础虽然真的很基础,但是我学起来又慢又吃力,我想不能忘记自己学语言学不会的样子. 这篇文章我决定写的很零碎,而且想尽量写的很通俗易懂,来锻炼自己说人话的能力. ...
- java基础详细讲解
java基础 java之父:詹姆斯·高斯林(James Gosling) java三大平台版本 J2ME(Java 2 Platform Micro Edition)小型版 是为开发电子消费产品和嵌入 ...
最新文章
- mysql filde_备份一个约250G的mysql实例【xtrabackup备份方案对比】
- MS UC 2013-0-虚拟机-标准化-部署-2-模板机-制作-4
- 国家发改委就数据基础制度征求意见 鼓励互联网企业开放公共属性数据
- 千亿化妆品市场规模背后,女人正在失去不化妆的权利
- java 课后习题 奇数排前
- Java Swing/AWT和GTK混合GUI编程
- PHP判断手机横向,H5横竖屏检测的方法
- MLP、RBF、SVM网络比较及其应用前景
- vscode-更换图标主题VSCode Icons.
- 190627每日一句南京创新周;那些绝对不会失败的人,是永远不去尝试的人
- 【小程序源码】自带接口短视频去印工具箱
- 邮件营销:邮件标题如何变得更有吸引力
- linux cpu数理,Linux中的 德·摩根定律
- 黄牛落泪!全球显卡价格纷纷跳水,高价囤货滞销
- 利用python做词频统计
- MySQL从删库到跑路(7):连接查询,用联系的观点看女神与渣男
- python数据分析可视化实例-Python数据分析与可视化从入门到精通
- 一卡通系统服务器配置,一卡通服务器配置要求
- 囚徒困境(双人博弈)
- Java 中的Monitor是什么意思?
热门文章
- Java Jackson
- 3.7 测试时的 Batch Norm
- 2.12 向量化的更多例子
- 2019年12月中国编程语言排行和薪资分析
- wordpress调用 php文件上传,wordpress上传的文件在哪
- 什么是分布式数据库中间件
- Nutanix:在云转型的道路上飞奔
- Redis学习总结(4)——Spring Data操作Redis
- java 编程字体_Java 是否可以为整个应用程序设置自定义字体?
- java request 克隆_Java 复制HttpServletRequest InputStream的方法 只需2步轻松搞定