synchronized块和synchronized函数

news/2024/5/17 20:21:43 标签: 多线程, , synchronized

synchronized块和synchronized函数住的都是当前对象。

class threadOne implements Runnable{
    public static int num=0;
    public static Object ob=new Object();
    public boolean b=true;
    @Override
    public void run(){
        if(b==true){
            synchronized (this){
                try{
                    Thread.sleep(600);
                }catch (Exception e){
                    e.printStackTrace();
                }
                while(num!=10){
                    num+=1;
                    System.out.println("run-num:"+num);
                }
            }
        }else{
            compute();
        }
    }

    public synchronized void compute(){
        while(num!=10){
            num+=1;
            System.out.println("compute-num:"+num);
        }
    }

}

public class threadTest {
    public static void main(String ...args){
        threadOne one=new threadOne();
        Thread t1=new Thread(one);
        Thread t2=new Thread(one);
        t1.start();
        try{
            Thread.sleep(300);
        }catch (Exception e){
            e.printStackTrace();
        }
        one.b=false;
        t2.start();
    }
}
D:\Java\jdk1.8.0_151\bin\java.exe "-javaagent:D:\idea\IntelliJ IDEA Community Edition 2018.2.5\lib\idea_rt.jar=1426:D:\idea\IntelliJ IDEA Community Edition 2018.2.5\bin" -Dfile.encoding=UTF-8 -classpath D:\Java\jdk1.8.0_151\jre\lib\charsets.jar;D:\Java\jdk1.8.0_151\jre\lib\deploy.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\access-bridge-64.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\cldrdata.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\dnsns.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\jaccess.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\jfxrt.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\localedata.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\nashorn.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\sunec.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\sunjce_provider.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\sunmscapi.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\sunpkcs11.jar;D:\Java\jdk1.8.0_151\jre\lib\ext\zipfs.jar;D:\Java\jdk1.8.0_151\jre\lib\javaws.jar;D:\Java\jdk1.8.0_151\jre\lib\jce.jar;D:\Java\jdk1.8.0_151\jre\lib\jfr.jar;D:\Java\jdk1.8.0_151\jre\lib\jfxswt.jar;D:\Java\jdk1.8.0_151\jre\lib\jsse.jar;D:\Java\jdk1.8.0_151\jre\lib\management-agent.jar;D:\Java\jdk1.8.0_151\jre\lib\plugin.jar;D:\Java\jdk1.8.0_151\jre\lib\resources.jar;D:\Java\jdk1.8.0_151\jre\lib\rt.jar;E:\threadTest\out\production\threadTest threadTest
run-num:1
run-num:2
run-num:3
run-num:4
run-num:5
run-num:6
run-num:7
run-num:8
run-num:9
run-num:10

Process finished with exit code 0

 

以上是运行结果,证明了后面compute函数无法竞争到

有问题可以在留言区交流。


http://www.niftyadmin.cn/n/1280556.html

相关文章

【Linux】—— 线程基本概念

Linux线程概念 什么是线程 在讲线程之前我们来看一幅图,这个我们应该都不陌生,这个就是我们的进程PCB通过页表MMU完成虚拟地址到物理地址的映射。 接着我们看一下线程,我们之前提到线程是在进程的程序地址空间中运行的,从下图中…

Java之线程(0) - 序

线程在编程的道路上是不可缺少的一部分,就像在这纷扰的人群中的每一个人都是一条线程,在同一个路口,大家并行或争先恐后的前进着。 不管在java web、android应用还是游戏开发中 线程的分量还是很重要的... 使用java.lang.Thread类或者java.la…

access update语句执行_SQL Server与Access数据库sql语法十大差异

ACCESS结构简单容易处理,而且也能满足多数的应用程序要求,也是初学者的试牛刀。随着时间的推移,大多数数据库应用程序都会发展,变得更复杂,并且需要支持更多用户。在 Access 数据库应用程序的生命周期的某个时刻&#…

java中为什么不允许类多重继承,却允许接口多重继承

首先看下面这一段代码:(底下有热心网友更正,jdk1.8之后情况确实有点变化,等改天有空继续更) interface a{void b(); } interface a1 extends a{void b(); } interface a2 extends a{void b(); } interface a12 extend…

墨卡托投影实现

又称正轴等角圆柱投影。圆柱投影的一种,由荷兰地图学家墨卡托(G. Mercator)于1569年创拟。为地图投影方法中影响最大的。设想一个与地轴方向一致的圆柱切于或割于地球,按等角条件将经纬网投影到圆柱面上,将圆柱面展为平…

localstorage存储大小_一文带你搞懂前端本地存储

作者:monkeysoft转发链接:https://mp.weixin.qq.com/s/74INx6HJ0N8RhF8red4FdQ前言在前端项目开发中,前端的本地存储是必不可少的,今天小编就前端的本地存储在项目中的使用详细的介绍一下。前端本地存储主要有:cookiel…

【Linux】—— 基于阻塞队列的生产消费者模型

在我们介绍今天的内容之前我们先了解一些相关的概念 Linux线程基本概念 Linux线程控制 Linux线程互斥 Linux线程同步 接下来我们进入今天的主题生产者消费者模型 生产者消费者模型 生产者消费者模型概念 321原则:3种关系,2类角色,一个…

自定义Scanner

java中,当我们需要使用键盘输入的时候,就要使用Scanner类了,当然我们也可以自定义Scanner类,前提是我们在声明一个Scanner类的时候,传进去的参数要实现了Readable接口。 下面是我测试的一个小例子,它的作用…