方式一:同步代码块
synchronized(同步监视器)
说明:
1.操作共享数据的代码,即为需要被同步的代码。
2.共享数据:多个线程共同操作的变量。比如: id 就是共享数据。
(id见https://blog.csdn.net/weixin_45634936/article/details/105385128)
3.同步监视器,俗称:锁。任何一个类的对象,都可以充当锁。(this需要注意this的指向)
方式二:同步方法
private synchronized void show(){ }//这个同步监视器是错误的
private static synchronized void show(){ }//正确的
使用同步方法解决实现Runnable接口的线程安全问题
关于同步方法解决的总结
1.同步方法仍然涉及到同步监视器,只是不需要我们声明显示。
2.非静态的同步方法,同步监视器是:this
静态的同步方法,同步监视器是:当前类本身