同步代码快:解决多线程安全问题

原创 2013年12月02日 19:24:27

同步代码块:解决多线程安全问题

synchronized(对象)
{
需要同步的代码
}
前提:一个以上线程;多个线程一个锁
好处:解决了安全问题
弊端:消耗资源,慢

 

class Ticket implements Runnable//extends Thread
{
 private static int tick = 100;
 Object obj = new Object();

 public void run()
 {
  while(true)
  {
   synchronized(obj)
   {
    if(tick>0)
    {
     try
     {
      Thread.sleep(20);
     }
     catch
      (Exception e)
     {};
     System.out.println(Thread.currentThread().getName()+"...sale :"+tick--);
    }
   }
  }
 }

}

class  TicketDemo2
{
 public static void main(String[] args)
 {
  
  Ticket t = new Ticket();

  Thread t1 =new Thread(t);
  Thread t2 =new Thread(t);
  Thread t3 =new Thread(t);
  Thread t4 =new Thread(t);

  t1.start();
  t2.start();
  t3.start();
  t4.start();
 }
}

相关文章推荐

黑马程序员:多线程的介绍、应用及由安全问题引出的同步代码块介绍

进程:是一个正在执行中的程序。每一个进程执行都有一个执行顺序,该顺序是一个执行路径,或者叫一个控制单元 线程:进程中一个独立的控制单元,实质上是线程在控制着进程的执行,一个进程中至少有一个线程 JV...

04.多线程--04.【多线程卖票出现的数据安全问题】【同步代码块基本用法和原理】

多线程--4 多线程卖票出现的数据安全问题 同步代码块基本用法和原理 ----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ 1. ...

黑马程序员----多线程2(安全问题、同步代码块、同步函数、死锁)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-线程安全问题线程安全问题产生的原因需求:模拟4个线程同时卖100张票。 代码 class Ticket impl...

java中多线程安全问题产生&解决方案——同步方法

使用同步方法解决  格式:   修饰符 synchronized 返回值 方法名(){   } package com.itheima_05; /* * 同步方法:使用关键...

黑马程序员-(多线程)了解线程与如何解决线程同步到来的安全问题!(面试)

线程总结: 创建线程的两种方式: 1.继承Thread类,重写Thread的run方法,因为Thread类的run方法没有内容,创建继承Thread的子类调用start方法来启...

java多线程-线程间通信-示例代码-解决安全问题-等待唤醒机制wait()notify()notifyAll()

线程间通信 例程: Input→资源→Output 思考1:wait(),notify(),notifyAll(),用来操作线程为什么定义在了Object类中? 1,这...

java多线程-多线程的安全问题-多线程同步代码块-锁Synchronized

通过分析,发现,打印出了0,-1,-2等错票 多线程的运行出现了安全问题 问题的原因: 当多条语句在操作同一个线程共享数据时,一个线程对多条语句只执行了一部分...

多线程安全问题----同步方法

解决线程安全问题实现2 (2)同步方法 同步方法是指进入该方法时需要获取this 对象的同步锁, 在方法上使用 synchronized 关键字, 使用this 对象作为锁,也就是使用了当前对...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:同步代码快:解决多线程安全问题
举报原因:
原因补充:

(最多只允许输入30个字)