在面试菜鸟的时候碰到的锁的编程问题,没答好,记录一下:

package com.xielu.test;

/**
* Hello world!
*
*/
public class App
{
private Object lock = new Object();
private static int cnt = 1;
private static final int MAX = 100;
public static void main( String[] args )
{
Thread th1 = new Thread(){
@Override
public void run(){
synchronized(lock){
while(cnt <= MAX){
if(cnt%2 != 0){
System.out.println(cnt);
cnt++;
lock.notifyAll();
} else{
try{
lock.wait();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
};
Thread th2 = new Thread(){
@Override
public void run(){
synchronized(lock){
while(cnt <= MAX){
if(cnt%2 == 0){
System.out.println(cnt);
cnt++;
lock.notifyAll();
} else{
try{
lock.wait();
}catch(Exception e){
e.printStackTrace();
}
}
}
}
}
}; th1.start();
th2.start();
}
}

  

java中锁的应用(synchronized)的更多相关文章

  1. Java同步锁——lock与synchronized 的区别【转】

    在网上看来很多关于同步锁的博文,记录下来方便以后阅读 一.Lock和synchronized有以下几点不同: 1)Lock是一个接口,而synchronized是Java中的关键字,synchroni ...

  2. JAVA中锁的解决方案

    前言 在上一节中,我们给大家介绍了什么是锁,以及锁的使用场景,我相信大家对锁的定义,以及锁的重要性都有了比较清晰的认识.在这一节中,我们会给大家继续做深入的介绍,介绍JAVA为我们提供的不同种类的锁. ...

  3. 并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础

    欢迎来到<并发王者课>,本文是该系列文章中的第14篇. 在黄金系列中,我们介绍了并发中一些问题,比如死锁.活锁.线程饥饿等问题.在并发编程中,这些问题无疑都是需要解决的.所以,在铂金系列文 ...

  4. Java中的ReentrantLock和synchronized两种锁定机制的对比

    问题:多个访问线程将需要写入到文件中的数据先保存到一个队列里面,然后由专门的 写出线程负责从队列中取出数据并写入到文件中. http://blog.csdn.net/top_code/article/ ...

  5. Java中String做为synchronized同步锁使用详解

    Java中使用String作同步锁 在Java中String是一种特殊的类型存在,在jdk中String在创建后是共享常量池的,即使在jdk1.8之后实现有所不同,但是功能还是差不多的. 借助这个特点 ...

  6. 浅谈对java中锁的理解

    在并发编程中,经常遇到多个线程访问同一个 共享资源 ,这时候作为开发者必须考虑如何维护数据一致性,在java中synchronized关键字被常用于维护数据一致性.synchronized机制是给共享 ...

  7. Java中的Lock与synchronized

    并发编程学习笔记之Lock与synchronized 一.什么是可重入锁 Lcok在Java中是一个接口,一般在面试问题中问到的可能是ReentrantLock与synchronized的区别.Ree ...

  8. Java中锁分类

    锁的分类大致如下:公平锁/非公平锁可重入锁/不可重入锁独享锁/共享锁乐观锁/悲观锁分段锁 1.公平锁/非公平锁公平锁就是严格按照线程启动的顺序来执行的,不允许其他线程插队执行的:而非公平锁是允许插队的 ...

  9. java中多线程详解-synchronized

    一.介绍 当多个线程涉及到共享数据的时候,就会设计到线程安全的问题.非线程安全其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是“脏读”.发生脏读,就是取到的数据已经被其他的线 ...

  10. java中锁

    s锁的作用是就是保证线程安全,但是从另外成都讲影响了效率: 1 synchronized关键字 这个是虚拟机底层实现的, java中的关键字,内部实现为监视器锁,主要是通过对象监视器在对象头中的字段来 ...

随机推荐

  1. linux 动态库、静态库

    库:可执行的二进制代码,不可以独立执行(没有main函数入口) 库是否兼容:取决于编译器.汇编器.链接器 linux链接静态库(.a):将库中用到的函数的代码指令,写入到可执行文件中.运行时无依赖 l ...

  2. js实现点击按钮或div显示与隐藏div

    var box = document.getElementById("box"); var btn = document.getElementById("btn" ...

  3. vue-用户管理系统

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. sqlyog连接hive解决方案

    解决步骤:(代码无需修改直接按顺序复制粘贴到Linux命令即可)1.需要在cent7中开放端口,开放端口需要开启防火墙.systemctl stop firewalld.service关闭防火墙sys ...

  5. [*]Is L2 Physics-Informed Loss Always Suitable for Training Physics-Informed Neural Network?

    NeurIPS 2022 本篇工作对PINN中的物理损失进行了探究,作者认为L2损失并不总是适用于训练PINN.并从PDE解的稳定性角度给出了理论性的说明.读了这篇文章,感觉自己的毕业论文做的十分浅显 ...

  6. 吴恩达老师机器学习课程chapter05——评估模型

    吴恩达老师机器学习课程chapter05--评估模型 本文是非计算机专业新手的自学笔记,高手勿喷. 本文仅作速查备忘之用,对应吴恩达(AndrewNg)老师的机器学期课程第十章.第十一章. 目录 吴恩 ...

  7. @JsonSerialize(using = ToStringSerializer.class) 转换失败

    解决方案 但实际开发过程中,数据库的bigint,Java的Long都是比较常用的数据类型,为了避免精度丢失,针对这种比较大的数值 全局配置,将数值类型转换为文本如果需要将所有的数值类型全部转换成文本 ...

  8. Unity通用渲染管线Shader日志输出工具

    https://blog.uwa4d.com/archives/USparkle_Shaderlog.html

  9. C语言学习--常量指针与指针常量

    指针常量 #include<stdio.h> #include<string.h> //常量指针:是一个指针, 定义不用初始化, 能改变指向,但是指向的内容不能被修改 cons ...

  10. js 表格分页,ajax请求后台数据前台分页

    $(function(){ var url="后台给的地址"; var shuju=document.getElementById("shuju"); cons ...