并发
并发:当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。.这种方式我们称之为并发(Concurrent)。
线程的创建
- 实现Runnable接口
- 建立一个Thread的子类来实现(不推荐使用)
线程状态
- 新建(new)
- 就绪(Runnable)
- 阻塞(Blucked)
- 死亡(dead)
线程方法
- 线程礼让(礼让不一定成功)
例如:
Thread.yield();
- 线程休眠
Thread.sleep();
- 线程停止
- 循环控制(for while if)
- 标志位控制(flag)
- stop(JDK不建议使用,或者已经过时的方法)
- 线程插入
- 在此线程执行完毕后,在执行其他线程。(插队)例如:
demo4 demo4 = new demo4();
Thread demo= new Thread(demo4);
demo.join();
- 守护线程
守护线程默认false,例子是将demo作为守护线程。例子如下:
demo4 demo4 = new demo4();
Thread demo= new Thread(demo4);
demo.setDaemon(true);
- 线程优先级
thread.setPriority(3);
三大不安全线程
- 不安全的买票
- 两个人去银行用同一个账户取钱
- 线程不安全的集合(ArrayList,HashMap,HashSet)
结论:以上均是多个线程操作一个对象
同步方法以及同步块
- 锁(lock)
- synchronized关键字
- 死锁
- 乐观锁
- 悲观锁