• 线程同步机制


     一.当多个线程访问同一份相同的数据,会出现线程安全问题,也就是第一个线程还没有处理完成,另一个线种也执行这个方法。

       synchronized关键字放在方法返回类型之前,或者在synchronized括号里面放同一个对象;通用的方法是放类的字节码。

    以下举例说明

    class Test{
    public static void main(String[] args) {
    new Test().init();
    }

    public void init() {
    final Outputer outputer = new Outputer();
    new Thread(new Runnable() {
    public void run() {
    while(true){
    try {
    Thread.sleep(100);
    outputer.outPut("dingsi");
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }).start();

    new Thread(new Runnable() {
    public void run() {
    while(true){
    try {
    Thread.sleep(100);
    outputer.outPut("huahua");
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    }).start();
    }

    class Outputer{
    public void outPut(String name){
    int length = name.length();
    for(int i = 0;i<length;i++){
    System.out.print(name.charAt(i));
    }
    System.out.println();

    }
    }
    }

     结果如下:

     

    如果把上面打印的方法改为

    public synchronized void outPut(String name){ 
    int length = name.length();
    for(int i = 0;i<length;i++){
    System.out.print(name.charAt(i));
    }
    System.out.println();
    }
     或者

     public void outPut(String name){

    int length = name.length();
    synchronized (Test.class) {
    for(int i = 0;i<length;i++){
    System.out.print(name.charAt(i));
    }
    }
    System.out.println();
    }

  • 相关阅读:
    this指向问题
    原生js实现的金山打字小游戏(实例代码详解)
    js实现点赞效果
    .net core部署到linux可能碰到的问题
    Linux curl命令详解 Web程序
    用十年来学编程
    JAVA的字符串拼接与性能
    PHP学习的技巧和学习的要素总结
    php实现验证邮箱格式的代码实例
    PHP页面中文乱码处理办法
  • 原文地址:https://www.cnblogs.com/dsking/p/5254099.html
Copyright © 2020-2023  润新知