并发编程之基础概念

76 阅读1分钟

创建线程的两种方式

1、继承Thread

2、实现Runnable,也需要new Thread(Runnable run)

开启线程为 Thread.start方法

Thread.sleep 睡眠,让给别的线程执行

Thread.yield 谦让的退出,回到等待队列里,有可能接下来还是此线程执行

join方法,t1、t2两个线程 ,如果t1中有一步调用t2.join方法,那么先执行t2线程,一般用于等待另外一个线程执行完,保证线程按顺序执行

公平锁和非公平锁

公平锁会先去检查队列里是否有等待执行的线程,如果有直接放到队列里,非公平锁是先去尝试执行一下,在放入队列

线程的状态

初始状态,调用start之后就是(runnable)分为 就绪(在cup等待队列) 和可运行

阻塞状态:等待进入同步代码块

如果调用wait、join等进入等待状态,调用notify回到runnable

如果调用wait(time)、sleep(time)等进入时间等待状态,时间结束回到runnable

最后是结束状态

notify是不释放锁的,wait重新执行需要获取锁