当前位置: 首页 > 后端技术 > Java

想想写什么

时间:2023-04-02 00:31:50 Java

java中的线程创建方法1.继承Thread类:重写run方法并调用start方法2.实现Runnable接口:重写run方法,创建一个实现Runnable接口的子类对象,并创建一个Thread类,调用start方法3,实现可调用接口:重写call方法,创建Excutors线程池,提交程序,接受返回值并抛出异常,关闭服务完成使用线;线程的五种状态1、新生状态:新出来的新2、就绪状态:调用start方法进入就绪状态。此时线程并没有执行,而是等待cpu调度。3、运行状态:CPU调度线程进入运行状态,开始执行代码4、阻塞状态:当线程调用sleep方法或wait方法时,会进入阻塞状态。此时线程停止运行,进入就绪状态等待cpu调度;5、死态:当线程运行结束后,进入死态,或者调用stop方法使线程进入死态,此时CPU无法重新调度该状态。数据库事务的ACID特性。原子性:要么全部执行成功,要么全部执行失败。交易是不可见的和持久的:一旦交易被提交,它的影响应该被保留。一个不能撤销事务的隔离数据库系统必须具备隔离并发运行各种事务的能力,这样它们才不会相互影响,避免各种并发问题。事务与其他事务隔离的程度称为隔离级别。数据库规定了多个事务隔离级别,不同的隔离级别对应不同程度的干扰。隔离级别越高,数据一致性越好,但并发性越弱。Oracle支持2种事务隔离级别:READCOMMITED、SERIALIZABLE。Oracle默认的事务隔离级别是:READCOMMITEDMysql支持4种事务隔离级别。Mysql默认的事务隔离级别是:REPEATABLE-READ获取一个单独的数据库连接。每个数据库连接都有一个变量@@tx_isolation,表示当前的事务隔离级别。查看当前隔离级别:SELECT@@tx_isolation;查看全局隔离级别:选择@@global.tx_isolation;设置当前mySQL连接的隔离级别:settx_isolation='repeatable-read';设置数据库系统的全局隔离级别:setglobaltx_isolation='read-committed';数据库隔离级别Readuncommittedreaduncommitted:READUNCOMMITTED级别忽略其他事务放置的锁。运行在READUNCOMMITTED级别的事务可以读取其他事务尚未提交的更改数据值。这些行为称为“脏”读。我们所说的脏读,两个并发的事务,事务A可以读取事务B未提交的数据。假设事务A回滚,事务B读取一行未提交的数据。我们认为这种数据不存在。读取已提交:一个事务只能读取另一个事务已提交的更改。它避免了脏读,但仍然存在不可重复读和幻读。大多数数据库的默认级别是Readcommitted。如SqlServer、Oracle。可重复读:该级别规定在当前事务提交之前,任何其他事务都不能更改或删除当前事务已读取的数据。并发性低于READCOMMITTED。由于读取数据上的共享锁在整个事务期间一直持有,因此不会在每个语句结束时释放。这种隔离级别只是表示不能修改或删除,并不强制不能插入满足条件查询的新数据行。因此,就会出现“幻读”;Mysql默认的隔离级别是RepeatablereadSerializableserialread:全序列化读,每次读都需要获取表级共享锁,读写都会阻塞数据库引擎