赞
踩
系统初始界面;登陆界面设计 ;学生信息录入;学生信息修改;学生信息查询;学生成绩录入;修改学生成绩;学生成绩查询 ;用户管理
该项目用PyCharm 可直接打开,数据库内嵌,可直接用
文件:590m.com/f/25127180-486621497-487091(访问密码:551685)
以下内容无关:
-------------------------------------------分割线---------------------------------------------
在之前对多线程编程的研究之后,我们遇到了线程安全问题,如在多线程票务场景下的超售/转售。
最后一部分的注释在这里-过程和线程注释
我们如何确定一个程序是否可能存在线程安全问题?有三个标准:
在一个多线程程序中+有共享数据+多个语句操作共享数据
多线程场景和共享数据的条件不能更改(比如4个窗口一起卖100张票,这是业务)
因此,这个想法可以从第三点“多个语句操作共享数据”开始,因为它正处于多个语句操作数据问题的过程中
然后,我们可以打包所有可能有问题的代码,每次只让一个线程执行它
1.2同步与异步
那么,如何“打包所有可能出错的代码”呢?我们可以使用synchronized关键字来实现同步
换句话说,当多个对象对共享数据进行操作时,可以使用同步锁来解决线程安全问题。锁定代码是同步的
接下来,介绍同步和异步的概念:
同步:显示排队的效果。一次,只有一个线程可以独占资源,其他没有权限的线程可以排队。
缺点是效率低,但很安全。
异步:反映了多线程抢占资源的效果,线程之间不等待,彼此抢占资源。
缺点是存在安全隐患,效率更高。
1.3同步
1.3.1写作
同步(对象){
需要同步的代码(即多个操作共享数据的语句,这可能会产生问题);
}
1.3.2前提
使用同步有两个先决条件:
图1:同步需要两个或更多线程(单个线程不需要是多线程安全的)
前提2:多个线程必须使用同一个锁(我上锁后其他人可以看到锁,否则我的锁不会锁其他人,锁的效果会丢失)
1.3.3特点
synchronized关键字可以用来修改一个方法,称为同步方法,使用一个称为this的锁对象
synchronized关键字可以用来修改一个称为同步块的代码块,该代码块可以使用任何锁对象
同步的缺点是它减慢了程序的执行,但是为了保证线程的安全,必须牺牲一些性能
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。