温馨提示:距离2024年结束还剩18天,剩余约为4.92%...
简要回答:
简要回答:
辅助理解:
英文 | 中文 | 更新丢失 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|---|---|
Read Uncommited | 读未提交 | 不会出现 | 会出现 | 会出现 | 会出现 |
Read Commited | 读已提交 | 不会出现 | 不会出现 | 会出现 | 会出现 |
Repeatable Read | 可重复读 | 不会出现 | 不会出现 | 不会出现 | 会出现 |
Serializable | 串行化 | 不会出现 | 不会出现 | 不会出现 | 不会出现 |
大多数数据库的默认隔离级别为: Read Commited,如Sql Server , Oracle。
少数数据库默认的隔离级别为Repeatable Read, 如MySQL InnoDB存储引擎。
理解脏读、不可重复读、幻读:
简单理解4个隔离级别
辅助理解:
/**
* 继承Thread类,并重写run方法
*/
public class MyThread extends Thread {
@Override
public void run() {
super.run();
System.out.println("MyThread...");
}
}
MyThread thread = new MyThread();
thread.start();
注意:
调用start方法并不意味立刻执行run方法,只是使该线程处于可运行状态,具体什么时候执行,由系统来决定。
java不支持多继承,这种方式有继承限制。
实现Runnable接口方式:
/**
* 实现Runnable接口,并重写run方法
*/
public class MyRunnable implements Runnable{
@Override
public void run() {
System.out.println("MyRunnable...");
}
}
MyRunnable runnable=new MyRunnable();
Thread thread=new Thread(runnable);
thread.start();
注意:
限制较小,推荐用这个方式。
实现Callable接口方式:
/**
* 实现Callable接口,并重写call方法
*/
public class MyCallable implements Callable<String>{
@Override
public String call() throws Exception {
return "MyCallable...";
}
}
//创建和调用
MyCallable callable=new MyCallable();
ExecutorService eService=Executors.newSingleThreadExecutor();
Future<String> future=eService.submit(callable);
//获取返回结果
try {
String result=future.get();
System.out.println(result);
} catch (Exception e) {
e.printStackTrace();
}
注意:
简要理解:
辅助理解: