Java高级特性 - 多线程基础(3)线程同步 1. 什么是线程同步? 线程同步是指在多线程环境下,通过一定的机制保证各个线程按照某种顺序访问共享资源,从而避免资源冲突和数据不一致的问题。线程同步的主要目的是确保线程安全,即多个线程在并发执行时,能够正确地访问和修改共享资源。
可能会有一种情况,当一个线程获取到对象的锁,然后在执行过程中因为一些原因(等待IO,调用sleep方法)被阻塞了,这个时候锁还在被阻塞的线程手中,而其他线程这个时候除了等之外,没有任何办法,我们想一想这样子会有多影响程序的效率。 synchronized是Java提供的关键字,使用起来非常方便,不过在有些情况下,它是具有很多局限...
步骤三:创建多个线程,每个线程使用共享资源类的方法 publicclassMain{publicstaticvoidmain(String[]args){SharedResourcesharedResource=newSharedResource();Threadthread1=newThread(()->{for(inti=0;i<1000;i++){sharedResource.increment();}});Threadthread2=newThread(()->{for(inti=0;i<1000;i++){shar...
这就是可见性问题,线程1对变量i修改了之后,线程2没有立即看到线程1修改的值。 对于可见性,Java提供了Volatile关键字来保证,当一个变量被Volatile修饰时,它会保证修改的值会被立即重新写入到主内存,当其他线程要调用该共享变量时,会去主内存中重新读取。 但是普通的共享变量是不能保证可见性的,因为普通变量会被读入...