代码如下:
public class SomeObj {
public void print(int i){
System.out.println(Thread.currentThread().getName()+DateHelper.getNow()+ " " + i);
try {
wait(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public
class ThreadA extends Thread{
private SyncTest st;
public ThreadA(SyncTest syncTest){
this.st=syncTest;
}
public void run(){
st.methodA();
}
}
public class SyncTest {
private volatile int i;
public static void main(String[] args) throws Exception {
new SyncTest().startUp();
}
public void startUp(){
for (int a = 0; a < 10; a++) {
new ThreadA(this).start();
}
}
private SomeObj obj = new SomeObj();
public void methodA() {
synchronized (obj) {
obj.print(i);
System.out.println(Thread.currentThread().getName()+DateHelper.getNow() + " god is a girl");
i++;
}
}
}
===============================================
synchronized (obj) { 运行结果显示,同步代码块并没有被锁住,而把这行代码的obj替换成this或者随便其他的instance对象,都能锁住代码块。求解?
问题补充:public void print(int i){ //obj替換成this的時候,這行代碼前加syncronized
相关推荐
6. **多线程**:Java内置对多线程的支持,实验课程可能包含线程的创建、同步控制(synchronized关键字、wait()、notify())等内容,以实现并发编程。 7. **网络编程**:Java的Socket编程是网络通信的基础,实验可能...
Java提供了丰富的同步机制,如synchronized关键字、wait()和notify()方法、Lock接口及其实现类,帮助开发者处理线程安全问题。 另外,Java的I/O流和NIO(New IO)系统是处理输入输出的关键部分。I/O流允许程序读取...
这段代码的字节码中,可以看到`monitorenter`和`monitorexit`指令,它们分别对应于进入和退出同步代码块的操作,确保了i++操作的原子性。 总的来说,Synchronized是Java中实现线程同步的重要工具,其背后的锁机制...
- 同步有多种实现方式,包括`synchronized`关键字(可以用于方法或代码块),以及`wait()`和`notify()`方法,它们用于线程间的通信。 5. **类的执行顺序**: - 在Java中,构造函数会按照创建对象的顺序执行。在...
- **同步与锁**: 使用`synchronized`关键字可以实现方法级或代码块级的同步,从而确保同一时刻只有一个线程可以访问特定资源。 - **死锁问题**: 当两个或更多线程相互等待对方持有的锁时,会发生死锁。合理设计锁...
多线程编程是Java的一个强项,面试中可能会讨论线程的创建、同步机制(如synchronized、Lock)、线程安全问题以及并发设计模式。 11. **运算符**: 了解各种运算符的优先级、作用以及特殊用法,如位运算符在处理...
线程的创建、同步、通信(如synchronized关键字、wait()、notify())等内容将在课件中详细阐述。 7. **泛型**:泛型引入了类型参数的概念,提高了代码的类型安全性和重用性。课件将讲解泛型类、泛型方法、通配符、...
9. **多线程**:创建和管理线程,了解同步机制,如synchronized关键字和wait()、notify()方法。 10. **网络编程**:学习Socket编程,实现客户端和服务器端的通信。 11. **反射机制**:通过反射API动态获取类的信息...
同步机制的实现主要有`synchronized`关键字、`wait()`、`notify()`和`notifyAll()`方法。 6. 类的执行顺序:在创建子类对象时,会先执行父类的构造器,然后执行子类的构造器。在上述代码中,输出顺序是"FatherClass...
- **多线程**:线程的创建方式(Thread类和Runnable接口),线程同步机制(synchronized、wait/notify、Lock、Condition)。 - **集合框架**:List、Set、Map的区别,ArrayList、LinkedList、HashSet、HashMap的...
同步机制,如synchronized关键字和Lock接口,用于控制对共享资源的访问,防止数据不一致。 最后,JavaOne是一个知名的Java技术大会,这里提到的"javaOne-master"可能是该会议的资料或项目。它可能包含了一些课程的...
Java提供了Thread类和Runnable接口来创建和管理线程,同时还有synchronized关键字、wait()、notify()等机制来处理线程间的同步和通信,防止数据竞争问题。 JDBC(Java Database Connectivity)是Java与数据库交互的...
同步机制,如synchronized关键字、wait()和notify()方法,用于避免线程间的竞态条件和死锁,确保程序的正确性。 网络编程在Java中也得到了很好的支持,Socket编程允许开发网络应用程序。理解TCP和UDP协议,以及如何...
│ 高并发编程第一阶段20讲、同步代码块以及同步方法之间的区别和关系.mp4 │ 高并发编程第一阶段21讲、通过实验分析This锁的存在.mp4 │ 高并发编程第一阶段22讲、通过实验分析Class锁的存在.mp4 │ 高并发编程...
在Java中,可以通过synchronized关键字轻松实现方法的同步,但在Python中并没有内建的同步关键字。因此,开发者通常使用threading模块中的Lock对象来控制线程对共享资源的访问,确保同一时刻只有一个线程可以执行被...
│ 高并发编程第一阶段20讲、同步代码块以及同步方法之间的区别和关系.mp4 │ 高并发编程第一阶段21讲、通过实验分析This锁的存在.mp4 │ 高并发编程第一阶段22讲、通过实验分析Class锁的存在.mp4 │ 高并发编程...
8. **多线程**:Java支持并发编程,学习者将学习如何创建和管理线程,以及如何使用同步机制(如synchronized关键字和wait/notify机制)来避免并发问题。 9. **异常和错误分类**:Java区分了异常(Exception)和错误...
7. **多线程编程**:学习如何创建和管理线程,理解同步和互斥的概念,使用synchronized关键字和Lock接口。 8. **单元测试**:理解JUnit框架的使用,编写测试用例以确保代码的正确性。 9. **版本控制**:熟悉Git的...