`

137_多线程(多线程-同步函数)

阅读更多
/*
需求:银行有一个金库。
有两个储户分别存300元,每次存100,存3次

目的:该程序是否有安全问题,如果有,如何解决。

如何找问题:
1.明确哪些代码是多线程运行代码
2.明确共享数据
3.明确多线程运行代码中哪些语句是操作共享数据的
*/

class Banka{
	private int sum;
	public sychronized void add(int n){
		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(){
		for(int x=0;x<3;x++){
			b.add(100);
		}
	}
}

class Bank{
	public static void main(String[] args){
		Cus c = new Cus();
		Thread t1 = new Thread(c);
		Thread t2 = new Thread(c);
		t1.start();
		t2.start();
	}
}

同步函数,多个线程都需要操作的函数,加上sychronized。
分享到:
评论

相关推荐

    MulThreadclass.rar_AfxBeginThread_cwinthread_多线程 同步

    感觉多线程确实麻烦,线程间要处理好同步与通讯,如果用CWinThread好一点,直接是一个线程对象,如果用AfxBeginThread,那必须定个全局函数,或者写个静态函数,一般是传个this指针进去,然后再用这个指针调用本类...

    jctp_trial-linux_x64-6.2.5_201403271045

    CTP是上期技术推出的综合交易平台,见百科,官方API为C++语言接口。 本软件为Java版CTP接口,支持平台: ... 多线程支持 同步API支持,见样例TraderInfo. CTP 接口开发文档见: http://pan.baidu.com/s/1gdmm5KR

    jctp_trial-win32_x86-6.2.5_201403271045

    CTP是上期技术推出的综合交易平台,见百科,官方API为C++语言接口。 本软件为Java版CTP接口,支持平台: Windows 32bit, CTP V6.2.5_201403271045 ... 多线程支持 同步API支持,见样例TraderInfo.

    2017最新大数据架构师精英课程

    10_多线程-同步代码块-同步方法 11_多线程-生产消费问题 12_多线程-死锁问题 13_字符集问题' X4 e; v9 q' U2 W% f" l7 f$ F 14_String-StringBuffer-StringBuilder 15_集合-list-arrayList-linkedlist 16_集合-...

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制 9.1 Java中的线程 9.2 Thread的子类创建线程 9.3 使用Runable接口 9.4 线程的常用方法 9.5 GUI线程 9.6 线程同步 9.7 在同步方法中使用wait()、notify 和notifyAll()方法 9.8 挂起、恢复和终止线程 ...

    多线程同步方法解决生产者-消费者问题(linux线程实现)

    即时显示有界缓冲区的全部内容,当前指针位置和生产者/消费者线程的标识符.(2)生产者和消费者各有两个以上.(3)多个生产者或多个消费者之间须有共享对缓冲区进行操作的函数代码. .c文件是用vi编辑器写的,utf-8和gb...

    《当析构函数遇到多线程》PPT

    这是陈硕在 2009 年上海 C++ 技术大会演讲《当析构函数遇到多线程》的 PPT 投影片,可自由用于个人学习,其他使用需得到作者许可。 简介:编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死...

    windows下多核多线程编程

    示例代码展示了如果在windows实现多线程的同步,如何在多核CPU上开辟多个线程同时运行。

    当析构函数遇到多线程── C++ 中线程安全的对象回调

    本文源自我在 2009 年 12 月上海 C++ 技术大会的一场演讲《当析构函数遇到多线程》,内容略有增删。原始 PPT 可从 http://download.csdn.net/source/1982430 下载。 本文读者应具有 C++ 多线程编程经验,熟悉互斥器...

    多线程同步演示(采用CreateThread()和WaitForMultipleObjects()函数)

    采用多线程技术,使用CreateThread WaitForMultipleObjects函数等,实现了5个人赛跑比赛的模拟,并统计比赛结果。是一个比较好的多线程的演示。

    用多线程同步方法解决生产者-消费者问题

    有界缓冲区内设有20个存储单元,放入/取出的数据项设定为1~20这20个整型数。 1.每个生产者和消费者对有界缓冲区进行操作后,即时显示有界缓冲区...3.多个生产者或多个消费者之间须共享对缓冲区进行操作的函数代码。

    Linux系统编程之线程同步

    所以,互斥锁实质上是操作系统提供的一把“建议锁”(又称“协同锁”),建议程序中有多线程访问共享资源的时候使用该机制。但,并没有强制限定。 因此,即使有了mutex,如果有线程不按规则来访问数据,依然会造成...

    当析构函数遇到多线程── C++ 中线程安全的对象回调 PDF

    本文源自陈硕在 2009 年 12 月上海 C++ 技术大会的一场演讲《当析构函数遇到多线程》,内容略有增删。原始 PPT 可从 http://download.csdn.net/source/1982430 下载。 本文读者应具有 C++ 多线程编程经验,熟悉互斥...

    多线程与智能指针.pdf

    线程同步 多线程同时读写同⼀份共享资源的时候,可能会引起冲突。需要引⼊线程"同步"机制,即各位线程之间有序地对共享资源进⾏操 作。 #include &lt;pthread.h&gt; using namespace std; queue&lt;int&gt; q; void *pop(void* ...

    Windows环境下的多线程编程原理与应用

    包括利用Wm32 API创建、利用运行时库函数创建和利用MFC中的全局函数创建,同时比较了不同创建方法的异同:第4章介绍了线程之间进行通信的方法,包括参数传递法、全局变量法、消息响应法以及线程同步法;第5章至第8章,...

    多线程操作实例源码,,

    多线程操作实例源码 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指...

    Delphi多线程编程之三 同步读写全局数据

    三、还有一种用信号量对象来管理线程同步的,它是在互斥的基础上建立的,但信号量增加了资源计数的功能,预定数目的线程允许同时进入要同步的代码。有点复杂,想不到在哪可以用,现在就不研究论了。 unit Tst_...

    用多线程同步方法解决读者写者问

    用多线程同步方法解决读者写者问题(Reader-Writer Problem) ,设有20个连续的存储单元,写入/读出的数据项设定为1~20这20个字符。 要求; (1) 每个读者/写者对该存储区进行操作后,即时显示该存储区的全部内容、当前...

Global site tag (gtag.js) - Google Analytics