java同步代码块的问题
public class T4 { public static void main(String[] args) { new Thread() { public void run() { while (true) { Printer.print1(); } } }.start(); new Thread() { public void run() { while (true) { Printer.print2(); } } }.start(); } } class Printer { public static void print1() { System.out.print("a"); System.out.print("b"); System.out.print("c"); System.out.println(); } public static void print2() { synchronized (Printer.class) { System.out.print("A"); System.out.print("B"); System.out.print("C"); System.out.println(); } } }
老师我想问下,不是加了synchronized关键字把指定的代码块变成同步代码块后,同步代码块的代码执行完后才会执行其他线程的代码吗?
为什么我这还是会出现问题?
我还想问:
是否要两段代码都必须要是相同的锁对象的同步代码才能同步?
如果像我上面的代码那样,一段是同步代码,另外一段不是同步代码,那么同步代码就没用了?
2
收起
正在回答
3回答
同学你好,被synchronize包裹的代码是指在该线程执行完之前,其他的线程不能执行其中的代码。而不是cpu不能执行其他的代码。祝:学习愉快~
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星