今天同桌问了一个我一个多线程的问题,其实很简单,但是,我没有马上解决
今天记录一下,
synchronized 加锁,有一点小心的是,这个只能对对象加锁,因为所有的对象的父亲都是object
其中onject 有相关的线程操作的方法,之前,我对共用资源使用的 int ,,所以,无法对共有资源加锁,
因为是对一个static 资源操作,所以我有的资源都是一个源头
class Buy extends Thread {
private static volatile Integer ticket = 50;private String name;
public Buy(String name) {
this.name = name;
}
@Override
public void run() {
synchronized (ticket) {
while (ticket > 1) {
System.out.println(name + "------" + ticket);
ticket--;
}
}
}
}
public class Main {
public static void main(String[] args) {
Buy buyA = new Buy("A");
Buy buyB = new Buy("B");
Buy buyC = new Buy("C");
buyA.start();
buyB.start();
buyC.start();
}
}