首页 > 编程 > Java > 正文

Java——System.out.println()

2019-11-10 20:19:12
字体:
来源:转载
供稿:网友

  对于java中System.out.PRintln()方法,大家一定都很熟悉,我在此简单介绍一下其在多线程中的问题。   先举一个简单的例子;

public class Test { public static void main(String[] args) { MyThread myThread = new MyThread(); Thread aThread = new Thread(myThread,"A"); Thread bThread = new Thread(myThread,"B"); Thread cThread = new Thread(myThread,"C"); Thread dThread = new Thread(myThread,"D"); Thread eThread = new Thread(myThread,"E"); aThread.start(); bThread.start(); cThread.start(); dThread.start(); eThread.start(); }}class MyThread extends Thread { private int i = 5; @Override public void run() { System.out.println("i=" + (i--) + " " + Thread.currentThread().getName()); }}

运行结果:   这里写图片描述   可以发现这里产生了非线性安全。我们可以先看一下System.out.println();方法的实现:   System.out.println()   可以发现其在内部是同步的,但为什么还会产生非线性安全呢?   其实,i–的操作是在进入System.out.println()方法前发生的,因此会发生非线性安全,要注意的是,它并不是每次都会产生问题,只是存在一定的概率。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表