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

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. 记录web面经

    1. npm版本号含义 例如: 2.3.1 (分别表示: 大版本,小版本, 补丁版本)大版本号: 大版本更新,功能添加,向下不兼容.小版本号:功能新增,向下兼容.补丁版本号: 修复bug.~符号含义: ...

  2. 执行celery --version报错

    python 3.7.4安装celery后执行celery --version报错 安装命令: pip install celery -i https://pypi.douban.com/simple ...

  3. Linux安装证书

    Linux安装 vCenter root CA: 1.访问vCenter管理页面,下载"下载受信任的根 CA 证书" 2.压缩文件内带有数字作为扩展名(.0..1 等)的文件是根证 ...

  4. 没解决的问题-git连接失败

    [parallels@localhost ~]$ ssh-keygen -t rsa -C '1012144290@qq.com'Generating public/private rsa key p ...

  5. vue element 可编辑表格行内验证

    <template> <div class="page-layout rataMdel"> <el-button type="primary ...

  6. java资源精华

    1. java基础教程虚拟机性能分析和故障解决工具_哔哩哔哩_bilibili 2.https://www.bilibili.com/video/BV1Eb4y1v7mB/?p=2&vd_so ...

  7. .net ef 链接 mysql

    https://blog.csdn.net/weixin_30394975/article/details/114168133

  8. Python学习笔记调试之取得反向跟踪的字符串

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  9. iOS开发 React Native与iOS交互汇总

    RN简介 React Native 是一个使用React和应用平台的原生功能来构建 Android 和 iOS 应用的开源框架.起源于faceBbook内部,2013开源. React Native ...

  10. WDA学习(24):Context Menu使用

    1.17 UI Element:Context Menu使用 本实例测试创建Context Menu. 1.创建Component,View: V_CONTEXT_MENU; 2.创建Context节 ...