直接献上简陋的代码,具体相关解释会在注释中对应给出。
学习严格按照之前所写道的:
“在高内聚低耦合的前提下实现 线程 操作 资源类”
//首先是资源类部分,在资源类中买票的功能内聚(高内聚)
class ticket{
private int numbers = 15 ; //以15张票为例,使用private保证对应的封装性
Lock lock = new ReentrantLock();//创建一个Lock对象实例lock,用以保障线程的安全
lock.lock();//上锁
try{
if (numbers > 0){
sysout.out,println(Thread.currentThread().getName()+"卖出第"+numbers--+"张,还剩下"+numbers+"张");//输出相关线程信息及剩余票数信息
}
}
finally{
lock.unlock();//释放锁,释放锁占用的相关资源
}
}
以上是对应的资源类,以及对资源类的操作方法;下面是关于多线程的相关实现:
1.1 显式匿名内部类实现:
public sale{
public static void main (String[] args){
ticket tit = new ticket();
//使用匿名内部类进行实现线程
new Thread(new Runnable() {
//覆写run方法
public void run() {
for(int i = 1; i<=30 ; i++) {//对应A线程对资源类的操作
tit.sale(); //调用操作
} } }, "A").start(); //名字叫做A的线程,并调度执行
}
}
//之后进行创建多个线程时仅用修改名字即可;
1.2 λ表达式实现:
//实质上也是采用匿名内部类的方式进行实现,不过在写法上明显简洁了不少
public sale{
public static void main (String[] args){
ticket tit = new ticket();
new Thread(()->{
for(int i = 1; i<=130 ; i++) {
tit.sale(); } },"Sjz").start();
}}
注意: 一个线程并不是一经创建及调用就会立刻执行,只有在一个线程得到了相应的一些资源及cpu使用权力方才会进行执行!!
后续还有 继承Thread 、 实现 callable 接口 、 实现runable接口、线程池等相关内容。