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

  • 相关阅读:
    Terminologies in MVC: Part 2 (Razor Engine Syntax vs Web Form)
    what is diff. b/w app state & session state
    ASP.NET Web Pages (Razor) FAQ
    _AppStart.cshtml 和 _PageStart.cshtml的妙用
    系统编程--信号
    系统编程--进程间通信
    系统编程--进程
    系统编程--标准IO
    系统编程--文件IO
    网络--路由表&IP选路
  • 原文地址:https://www.cnblogs.com/dsking/p/5254099.html
Copyright © 2011-2022 走看看