- class Ticket implements Runnable
- {
- private int tick = 100;
- Object obj = new Object();
- public void run()
- {
- while(true)
- {
- synchronized(obj)
- {
- if(tick > 0)
- {
- try{Thread.sleep(10);} catch(Exception e){} //由于等待时间过长,有的线程进来后会等待,当等待的线程
- System.out.println(Thread.currentThread().getName()+"sale:-----"+tick--);//都获取执行资格后都执行就
- } //容易出现安全问题;
- }
- }
- }
- }
复制代码
synchronized是用来解决线程安全问题的。
当有一个线程在执行Synchronized中的代码时,其他线程就进不去了,只有当前线程执行完毕,释放了锁(上面的obj就相当于一个锁)。其他线程才能够进来!
使用方法: synchronized(对象) { 需要被同步的代码; }
|