博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
线程安全
阅读量:5037 次
发布时间:2019-06-12

本文共 1159 字,大约阅读时间需要 3 分钟。

同步代码块:

public class Test {    public static V v = new V();    public static void main(String[] args) {        Test t = new Test();        t.fin();    }    public void fin() {        new Thread(new Runnable() {            public void run() {                while (true) {                    v.printString("AAAAAAAAAAAAAAAAAAAAA");                }            }        }).start();        new Thread(new Runnable() {            @Override            public void run() {                while (true) {                    v.printString("BBBBBBBBBBBBBBBBBBB");                }            }        }).start();    }}class V {    Object lock = new Object();    public void printString(String s) {        synchronized (lock) {                              //若是不加此锁则会导致字符串的打印异常            for (int i = 0; i < s.length(); i++) {                System.out.print(s.charAt(i));            }            System.out.println();        }    }}

同步方法:

synchronized关键字也可以放到方法上,这样整个方法就是同步的。同步监视器就是类对象本身this

 

public synchronized void printString(String s){                for(int i = 0;i

 

注意:synchronized关键字可以修饰方法、代码块,但是不能修饰构造方法和属性。

 

转载于:https://www.cnblogs.com/wintersong/p/4752606.html

你可能感兴趣的文章
Docker-Mysql-proxy Mysql Proxy实现读写分离
查看>>
mysql 的基本使用命令
查看>>
字符串排序之一
查看>>
判断三角形类型方法的单元测试
查看>>
C++学习笔记51:排序
查看>>
spring.factories
查看>>
php使用amqplib方式使用rabbitmq
查看>>
打印控件
查看>>
技术团队的目标管理
查看>>
gitlab的介绍
查看>>
利用logging.basicConfig生成文件--中文乱码解决方法
查看>>
matlab新手入门(二)(翻译)
查看>>
Python 编码规范 PEP8
查看>>
mac os 下安装 nmap网络扫描和嗅探工具包
查看>>
python 迷宫问题
查看>>
Ubuntu 14.04 源
查看>>
android界面开发那点事
查看>>
js事件基础
查看>>
玩转CPU Topology
查看>>
jquery实现可以中英切换的导航条
查看>>