/*
synchronized(对象)//其中对象相当于一个标志(锁),用于判断
{。。。。 }//同步代码块
同步的前提必须是两个或两个以上的线程,且共用同一个锁
同步解决了多线程的安全问题
弊端:多线程需要判断锁,消耗了资源
同步函数:将synchronized放在函数名前面即可(即具有同步性质)。使用的锁是this
静态的同步方法的锁是该方法所在类的字节码文件对象。
需要注意哪些需要同步哪些不需要同步,将需要同步的封装起来
*/
class Ticket implements Runnable
{
private int ticket = 100;
Object obj = new Object();
public void run()
{
while(true)
{
synchronized(obj)//obj为标志(锁)
{
if (ticket>0)
{
System.out.println(Thread.currentThread().getName()+" Hello "+ticket--);
}
}
}
}
}
class TicketDemo
{
public static void main(String[] args)
{
Runnable r = new Ticket();
Thread t = new Thread(r);
Thread t1 = new Thread(r);
Thread t2 = new Thread(r);
t.start();
t1.start();
t2.start();
}
}
多线程同步
最新推荐文章于 2023-07-11 22:44:47 发布