JAVA同步代码块的简单实例

mac2024-06-06  41

代码如下:

package java2; public class TestSynchronized { public static void main(String[] args) { // TODO 自动生成的方法存根 Printer p=new Printer(); new Thread() { public void run() { while(true) { p.printer1(); } } }.start(); new Thread() { public void run() { while(true) { p.printer2(); } } }.start(); } } //这样是对的 //class Printer{ // public void printer1() { // System.out.println("大家好"); // } // // public void printer2() { // System.out.println("你是谁"); // } //} //不加同步会出错,因为几个字不是一起的,不是同步,比如可能你输出一个“大”字然后线程就被另一个占领了,就开始输出“你”了。所以我们需要用到同步 class Printer{ public void printer1() { synchronized (this) {//synchronized (this) 括号里面必须是一样的,需要统一的锁(类)来管理,不然就没有用 System.out.print("大"); System.out.print("家"); System.out.print("好"); System.out.println(); } } public void printer2() { synchronized (this) { System.out.print("你"); System.out.print("是"); System.out.print("谁"); System.out.println(); } } }

运行结果图: 如果把同步代码块取消会出现 你是大家、你大家等等多的达不到符合要求的输出

最新回复(0)