黑马程序员_多线程之同步问题的前期,以及安全问题的发现和解决
2014-07-21 14:52
417 查看
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
package demo;
/*
同步的前提:
1、必须要有多个(2个或2个以上)的线程
2、必须多个线程使用同一个锁
必须保证同步中只有一个线程运行
好处:解决了多线程的安全问题
弊端:多个线程需要判断锁,消耗资源,降低效率。
*/
/*
需求:银行有一个金库
有两个人分别存300元,每次存100,存3次(解决安全问题后代码如下)
目的:该线程是否有安全问题,如果有如何解决?
如何找问题?
1、明确哪些代码是多线程代码
2、明确共享数据
3、明确多线程运行代码中那些语句是操作共享数据的。
*/
class Bank
{
private int sum;//共享数据
Object obj = new Object();
public void add(int n)
{
synchronized(obj)//synchronized内部的代码是操作共享数据的
{
sum=sum+n;
try{Thread.sleep(10);}catch(Exception e){}
System.out.println("sum="+sum);
}
}
}
class Cus implements Runnable
{
private Bank b=new Bank();
public void run()//run中的代码是多线程运行代码
{
for(int x=0;x<3;x++)
{
b.add(100);
}
}
}
public class BankDemo {
public static void main(String[] args)
{
Cus c = new Cus();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
package demo;
/*
同步的前提:
1、必须要有多个(2个或2个以上)的线程
2、必须多个线程使用同一个锁
必须保证同步中只有一个线程运行
好处:解决了多线程的安全问题
弊端:多个线程需要判断锁,消耗资源,降低效率。
*/
/*
需求:银行有一个金库
有两个人分别存300元,每次存100,存3次(解决安全问题后代码如下)
目的:该线程是否有安全问题,如果有如何解决?
如何找问题?
1、明确哪些代码是多线程代码
2、明确共享数据
3、明确多线程运行代码中那些语句是操作共享数据的。
*/
class Bank
{
private int sum;//共享数据
Object obj = new Object();
public void add(int n)
{
synchronized(obj)//synchronized内部的代码是操作共享数据的
{
sum=sum+n;
try{Thread.sleep(10);}catch(Exception e){}
System.out.println("sum="+sum);
}
}
}
class Cus implements Runnable
{
private Bank b=new Bank();
public void run()//run中的代码是多线程运行代码
{
for(int x=0;x<3;x++)
{
b.add(100);
}
}
}
public class BankDemo {
public static void main(String[] args)
{
Cus c = new Cus();
Thread t1 = new Thread(c);
Thread t2 = new Thread(c);
t1.start();
t2.start();
}
}
---------------------- <a href="http://www.itheima.com"target="blank">ASP.Net+Unity开发</a>、<a href="http://www.itheima.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
相关文章推荐
- 简单银行存款项目练习多线程安全问题解决方式——同步
- 多线程-同步代码块解决线程安全问题的解释以及同步的特点及好处和弊端
- 多线程学习2,买火车票,并解决同步安全的问题
- 黑马程序员——多线程——多线程概述,实现,控制与安全问题的解决
- 同步(解决多线程安全问题)
- 基础篇_线程 第5集 多线程的安全问题--解决之道同步函数
- 黑马程序员:Java基础——多线程之安全问题与同步
- Java学习笔记45(多线程二:安全问题以及解决原理)
- 黑马程序员------多线程(No.1)(概述、线程的创建、安全问题、同步锁、同步函数)
- 同步代码快:解决多线程安全问题
- 4000 java中多线程的安全问题以及解决办法(2)
- 黑马程序员-(多线程)了解线程与如何解决线程同步到来的安全问题!(面试)
- 黑马程序员——java中关于同步函数(或同步代码块)解决多线程安全问题的加锁
- java中多线程的安全问题以及解决办法
- 并发编程学习笔记二 ------synchronized关键字实现同步访问解决多线程安全问题
- java多线程的等待唤醒机制及如何解决同步过程中的安全问题
- Delphi中多线程用Synchronize实现VCL数据同步显示 解决在线程中操作控件出现问题
- 去除html发现的问题以及解决
- java多线程的同步 通信以及生产消费者问题
- ACE的ACE_Logging_Strategy类中的一个多线程安全问题的发现及解决过程