• synchronized关键字的用法


    Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。

    多线程同步执行时遇到的问题:

    代码:

     1 class Test{
     2     public static void main(String args []){
     3         MyThread myThread = new MyThread();
     4         Thread t1 = new Thread(myThread);
     5         Thread t2 = new Thread(myThread);
     6         t1.setName("线程a");
     7         t2.setName("线程b");
     8         t1.start();
     9         t2.start();
    10     }
    11 }
    View Code
    class MyThread implements Runnable{
        int i = 10;
        public void run(){
            while(true){
                System.out.println(Thread.currentThread().getName() + i);
                i--;
                Thread.yield();
                if(i < 0 ){
                    break;
                }
            }
        }
    }
    View Code

    执行结果:

    解决方法:

    在MyThread实现类中添加synchronized关键字

    class MyThread implements Runnable{
        int i = 10;
        public void run(){
            synchronized(this){
                while(true){
                System.out.println(Thread.currentThread().getName() + i);
                i--;
                Thread.yield();
                if(i < 0 ){
                    break;
                }
            }
            }
        }
    }
    View Code

    执行结果:

  • 相关阅读:
    ASP.NET 学习笔记(一)ASP.NET 概览
    JSP基础
    算法
    TestNG基础教程
    TestNG基础教程
    TestNG基础教程
    Jira
    Jira
    Jira
    Jira
  • 原文地址:https://www.cnblogs.com/Jhope/p/5066800.html
Copyright © 2020-2023  润新知