JUC:2_项目中多线程正确使用方式
JUC:项目中多线程正确使用方式项目中多线程正确使用方式代码问题:未使用同步锁项目中多线程正确使用方式真实多线程开发,为了降低耦合性,并不会新建一个类去继承Thread或者实现Runable这种,那样耦合性太强了编程要符合OOP线程就是一个单独的 资源类 ,没有任何附属操作,它就两个核心1.属性2.方法/*** 真实多线程开发,为了降低耦合性,并不会新建一个类去继承Thread或者实现Runabl
·
JUC:2_项目中多线程正确使用方式
项目中多线程正确使用方式
真实多线程开发,为了降低耦合性,并不会新建一个类去继承Thread或者实现Runable这种,那样耦合性太强了
-
编程要符合OOP
-
线程就是一个单独的 资源类 ,没有任何附属操作,它就两个核心
- 1.属性
- 2.方法
/**
* 真实多线程开发,为了降低耦合性,并不会新建一个类去继承Thread或者实现Runable这种,那样耦合性太强了
* 编程要符合OOP
* <p>
* 线程操作的就是一个单独的 资源类 ,没有任何附属操作,它就两个核心
* 1.属性
* 2.方法
*/
public class TestReal {
public static void main(String[] args) {
//并发:多线程操作同一个资源类,把资源类丢入线程
Ticket ticket = new Ticket(50);
//@Functional Interface 函数式接口,jdk1.8新增lambda表达式 (参数)->{代码}
new Thread(() -> {
for (int i = 0; i < 20; i++) {
ticket.sale();
}
}, "小红").start();
new Thread(() -> {
for (int i = 0; i < 20; i++) {
ticket.sale();
}
}, "小明").start();
new Thread(() -> {
for (int i = 0; i < 20; i++) {
ticket.sale();
}
}, "黄牛").start();
}
}
// 资源类
class Ticket {
private Integer ticketNums;
public Ticket(Integer ticketNums) {
this.ticketNums = ticketNums;
}
public void sale() {
if (ticketNums > 0) {
System.out.println(Thread.currentThread().getName() + "售出票号" + ticketNums-- + ",剩余" + ticketNums + "张票。");
}
}
}
输出:
小红售出票号50,剩余49张票。
小红售出票号49,剩余48张票。
小红售出票号48,剩余47张票。
小红售出票号47,剩余46张票。
小红售出票号46,剩余45张票。
小红售出票号45,剩余44张票。
小红售出票号44,剩余43张票。
小明售出票号44,剩余43张票。
小明售出票号42,剩余41张票。
小红售出票号43,剩余42张票。
小红售出票号40,剩余39张票。
小明售出票号41,剩余40张票。
小红售出票号39,剩余38张票。
小明售出票号38,剩余37张票。
小红售出票号37,剩余36张票。
小明售出票号36,剩余35张票。
小红售出票号35,剩余34张票。
黄牛售出票号33,剩余32张票。
黄牛售出票号31,剩余30张票。
黄牛售出票号30,剩余29张票。
黄牛售出票号29,剩余28张票。
黄牛售出票号28,剩余27张票。
黄牛售出票号27,剩余26张票。
黄牛售出票号26,剩余25张票。
黄牛售出票号25,剩余24张票。
黄牛售出票号24,剩余23张票。
黄牛售出票号23,剩余22张票。
小明售出票号34,剩余33张票。
黄牛售出票号22,剩余21张票。
小红售出票号32,剩余31张票。
黄牛售出票号20,剩余19张票。
黄牛售出票号18,剩余17张票。
黄牛售出票号17,剩余16张票。
黄牛售出票号16,剩余15张票。
黄牛售出票号15,剩余14张票。
黄牛售出票号14,剩余13张票。
黄牛售出票号13,剩余12张票。
黄牛售出票号12,剩余11张票。
黄牛售出票号11,剩余10张票。
小明售出票号21,剩余20张票。
小红售出票号19,剩余18张票。
小明售出票号10,剩余9张票。
小明售出票号8,剩余7张票。
小明售出票号7,剩余6张票。
小明售出票号6,剩余5张票。
小明售出票号5,剩余4张票。
小明售出票号4,剩余3张票。
小明售出票号3,剩余2张票。
小明售出票号2,剩余1张票。
小明售出票号1,剩余0张票。
小红售出票号9,剩余8张票。
代码问题:未使用同步锁
可以看到输出乱序了
更多推荐
已为社区贡献1条内容
所有评论(0)