马士兵 多线程小例子

dpflyee 2017-07-30 04:44:55
在原例子基础上加了一些标记的打印语句,出现了很多种结果,把m1方法中的Sleep语句注释掉后,截取了两个典型的结果。上半部分的结果我可以理解,关键是下半部分。是不是可以理解成m1方法执行之前已经将赋予b值将要打印,结果先执行了m1方法,m1方法执行结束后,打印出之前的b值2000,由于执行m1方法,b值变为1000,所以之后的打印结果都是1000。
...全文
264 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dpflyee 2017-08-01
  • 打赏
  • 举报
回复
引用 4 楼 qq_37406215的回复:
有吗马老师的视频 哪里可以下载吗
我在尚学堂官网下载的
9524_ 2017-08-01
  • 打赏
  • 举报
回复
有吗马老师的视频 哪里可以下载吗
dpflyee 2017-07-30
  • 打赏
  • 举报
回复
为啥代码的格式不对啊?
dpflyee 2017-07-30
  • 打赏
  • 举报
回复
public class TT implements Runnable { int b = 100; int i; public synchronized void m1() throws Exception{ System.out.println("m1执行开始,此时b=" + b); b = 1000; //Thread.sleep(5000); System.out.println("m1执行结束,此时b = " + b); } public synchronized void m2() throws Exception { System.out.println("m2执行开始,此时b=" + b); Thread.sleep(1000); b = 2000; System.out.println("m2执行结束,此时b=" + b); } public void run() { try { m1(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { TT tt = new TT(); Thread t = new Thread(tt); t.start(); tt.m2(); System.out.println("空行1"); System.out.println(tt.b); System.out.println("空行2"); System.out.println(tt.b); System.out.println("空行3"); System.out.println(tt.b); System.out.println("空行4"); System.out.println(tt.b); System.out.println("空行5"); System.out.println(tt.b); System.out.println("空行6"); System.out.println(tt.b); System.out.println("空行7"); System.out.println(tt.b); System.out.println("空行8"); System.out.println(tt.b); System.out.println("空行9"); System.out.println(tt.b); System.out.println("空行10"); } }
dpflyee 2017-07-30
  • 打赏
  • 举报
回复
public class TT implements Runnable { int b = 100; int i; public synchronized void m1() throws Exception{ System.out.println("m1执行开始,此时b=" + b); b = 1000; //Thread.sleep(5000); System.out.println("m1执行结束,此时b = " + b); } public synchronized void m2() throws Exception { System.out.println("m2执行开始,此时b=" + b); Thread.sleep(1000); b = 2000; System.out.println("m2执行结束,此时b=" + b); } public void run() { try { m1(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { TT tt = new TT(); Thread t = new Thread(tt); t.start(); tt.m2(); System.out.println("空行1"); System.out.println(tt.b); System.out.println("空行2"); System.out.println(tt.b); System.out.println("空行3"); System.out.println(tt.b); System.out.println("空行4"); System.out.println(tt.b); System.out.println("空行5"); System.out.println(tt.b); System.out.println("空行6"); System.out.println(tt.b); System.out.println("空行7"); System.out.println(tt.b); System.out.println("空行8"); System.out.println(tt.b); System.out.println("空行9"); System.out.println(tt.b); System.out.println("空行10"); } }

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧