zoukankan      html  css  js  c++  java
  • 线程同步机制

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

       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();
    }

  • 相关阅读:
    数据解析1127
    数据解析1119
    数据解析1114
    数据解析1122
    数据解析1121
    数据解析1120
    数据解析1116
    数据解析1128
    Twitter惊现新型病毒 每分钟159条速率分散
    宏达电预计本年有望在台湾市场击败诺基亚
  • 原文地址:https://www.cnblogs.com/dsking/p/5254099.html
Copyright © 2011-2022 走看看