今天跟同事讨论了一下多线程并发问题,为了验证自己的想法,写了如下代码: package com.zken.pkg; public class MultiThread implements Runnable { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public void run() { if (this.getName().equals("1")) { m1(); }else if(this.getName().equals("2")){ m2(); } } private synchronized void m1() { try { Thread.sleep(1000 * 10); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("m1::::"+this.getName()); } private void m2() { System.out.println("m2::::"+this.getName()); } public static void main(String[] args) { MultiThread multiThread = new MultiThread(); Thread thread1 = new Thread(multiThread); multiThread.setName("1"); thread1.start(); Thread thread2 = new Thread(multiThread); multiThread.setName("2"); thread2.start(); } }
我预测的结果是:
m2::::2
m1::::2
实际结果:
m2::::2
m2::::2
还请南来北往的神牛们帮忙解释下哈~~~~~~~~~~~~~~~~~~
原文:http://blog.csdn.net/zkn_cs_dn_2013/article/details/25902239