原因
最近公司项目没什么事情,加上我还是刚毕业的小萌新,所以索性就看了下《java并发编程的艺术》,其中涉及到很多东西,就还是写一下练习一下,毕竟多学多写才能变强变秃
需要知道
public enum State {
NEW,
RUNNABLE,
BLOCKED,
WAITING,
TIMED_WAITING,
TERMINATED;
}
实现
代码
public class BlogApplication {
public static void main(String[] args) {
new Thread( new Task( 0, "线程0" ) ).start();
new Thread( new Task( 1, "线程1" ) ).start();
new Thread( new Task( 2, "线程2" ) ).start();
}
}
class Task implements Runnable{
int i;
String name;
static int n = 0;
@SneakyThrows
@Override
public void run() {
synchronized (Task.class) {
while (n <= 100) {
if (n % 3 == i) {
System.out.println( name + " 打印" + n );
n++;
Task.class.notifyAll();
}
Task.class.wait();
}
}
}
public Task(int i, String name) {
this.i = i;
this.name = name;
}
}
其实到了这里重点也就是了解线程的2个方法作用
- wait()的作用就是在jvm中让出当前线程的权利,然后让其他阻塞线程进行去争抢这个锁。
- notyifyAll()的作用也就是唤醒这个准备抢占这个锁的其他所有线程去竞争获取这把锁