最近在学 jawa,看完线程同步想写个关于 IO 的线程同步来试手,实践得真知。
同步代码块
当多个线程同时处理共享资源时,就可能会引起线程安全问题,同步代码块能够有效解决线程的安全问题。
lock 充当了一个锁的功能,同步代码块的代码在执行时会先检查自己有没有该对象的读写权限。
同步方法
当一个方法的所有代码都在同步代码块的区域内时,可以用 synchronized
修饰该方法:
同步代码块的锁可以是自定义的任意对象,同步方法也有锁,它的锁就是当前调用该方法的对象,即 this
。
void wait()
可使当前线程放弃同步锁并进入等待。
void notify()
可唤醒此同步锁上等待的第一个调用wait()方法的线程。
代码
测试