任务(task)
任务是最抽象的,是一个一般性的术语,指由软件完成的一个活动。**一个任务既可以是一个进程,也可以是一个线程。**简而言之,它指的是一系列共同达到某一目的的操作。例如,读取数据并将数据放入内存中。这个任务可以作为一个进程来实现,也可以作为一个线程(或作为一个中断任务)来实现。
来个栗子!
//创建一个站台类,也可以说这是一个可以多线程同步的卖火车票的任务类
public class Station extends Thread{
//通过构造方法给线程名字复制
public Station (String name) {
super(name); //给线程名字赋值
}
//为了保持票数的一致,票数要静态
static int tick = 20;
//创建一个静态钥匙
static Object ob = "aa";//值是任意的
//重写run方法,实现买票操作
public void run(){
while (tick > 0){
synchronized (ob){//这个很重要,必须使用一个锁,
//进去的人会把钥匙拿在手上,出来后把钥匙交出去
if(tick > 0){
System.out.println(getName()+"卖出了第"+tick+"张票");
tick--;
}else System.out.println("票卖完了");
}
try {
sleep(1000); //一个线程执行完休息一秒,防止线程执行的太快,一个站台就把票卖光了
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
}
创建主方法调用类
public class MainClass {
/**
* java多线程同步锁的使用
* 示例:三个售票窗口同时出售10张票
* */
public static void main(String[] args) {
//实例化站台对象,并为每一个站台取名字
Station station1=new Station("窗口1");
Station station2=new Station("窗口2");
Station station3=new Station("窗口3");
// 让每一个站台对象各自开始工作
station1.start();
station2.start();
station3.start();
}
}