java 并发编程(2)

作者 : 开心源码 本文共4193个字,预计阅读时间需要11分钟 发布时间: 2022-05-12 共204人阅读

java_thread

原本想都以做菜开饭来讲解这个套 java 并发编程,不过对于那些不做菜的朋友有点太乏味了,也缺乏亲自体验,所以还是多元化,关键是以做菜为例进行讲解在配上美食图,会不会听到不是知识饥渴,而真的变得饥渴了。

starcraft barracks

这个游戏是我的时代游戏,一听就能猜出我大概哪个时代的人了? 也不肯定。游戏过程中我们获取资源,用资源建造兵营,兵营负责出兵进行战斗。

兵营的任务就是建造士兵,所以可以将线程比喻成兵营,代码如下。

  • 玩过游戏的人都知道兵数量是有上限的,这里给 50.
  • 而且兵是一个一个出。
public class Barracks extends Thread{    private final String name;    private final int MAX = 50;    private int index = 1;    public Barracks(String name) {        this.name = name;    }    @Override    public void run() {        while(index <= MAX){            System.out.println("barrack  " + name + " create warrior: " + (index++));        }    }}
public class ClientB {    public static void main(String[] args) {        Barracks barracks = new Barracks("one");        barracks.start();    }}

为了快速出兵,我们可以建造多个兵营同时出兵。

    public static void main(String[] args) {        Barracks barrackOne = new Barracks("one");        barrackOne.start();        Barracks barrackTwo = new Barracks("two");        barrackTwo.start();        Barracks barrackThree = new Barracks("three");        barrackThree.start();    }

不过从输出来看,由于出兵数量控制业务逻辑放置兵营(线程),这样就带来问题。对兵数量控制应该交个种族而不是兵营

barrack  two create warrior: 2barrack  three create warrior: 3barrack  one create warrior: 1barrack  three create warrior: 5barrack  two create warrior: 4barrack  three create warrior: 7barrack  one create warrior: 6barrack  three create warrior: 9barrack  two create warrior: 8barrack  three create warrior: 11barrack  one create warrior: 10barrack  three create warrior: 13barrack  two create warrior: 12barrack  three create warrior: 15barrack  one create warrior: 14barrack  three create warrior: 17barrack  two create warrior: 16barrack  two create warrior: 20barrack  two create warrior: 21barrack  three create warrior: 19barrack  one create warrior: 18barrack  three create warrior: 23barrack  three create warrior: 25barrack  two create warrior: 22barrack  three create warrior: 26barrack  one create warrior: 24barrack  three create warrior: 28barrack  two create warrior: 27barrack  three create warrior: 30barrack  one create warrior: 29barrack  three create warrior: 32barrack  two create warrior: 31barrack  three create warrior: 34barrack  three create warrior: 36barrack  one create warrior: 33barrack  one create warrior: 38barrack  three create warrior: 37barrack  three create warrior: 40barrack  three create warrior: 41barrack  two create warrior: 35barrack  three create warrior: 42barrack  one create warrior: 39barrack  three create warrior: 44barrack  two create warrior: 43barrack  three create warrior: 46barrack  one create warrior: 45barrack  one create warrior: 49barrack  one create warrior: 50barrack  three create warrior: 48barrack  two create warrior: 47

我们可以把这些业务逻辑冲一个个线程从提取到 Runnable 接口以达到多线程共享。

public class BarrackRunnable implements Runnable{    private int index = 0;    private final static int MAX = 50;    @Override    public void run() {        while(index <= MAX){            System.out.println("barrack  " + Thread.currentThread().getName() + " create warrior: " + (index++));        }    }}
public class ClientC {    public static void main(String[] args) {        final BarrackRunnable barrackRunnable = new BarrackRunnable();        Thread barrackThreadOne = new Thread(barrackRunnable,"one");        Thread barrackThreadTwo = new Thread(barrackRunnable,"two");        Thread barrackThreadThree = new Thread(barrackRunnable,"three");        barrackThreadOne.start();        barrackThreadTwo.start();        barrackThreadThree.start();    }}
barrack  one create warrior: 0barrack  one create warrior: 3barrack  one create warrior: 4barrack  one create warrior: 5barrack  one create warrior: 6barrack  one create warrior: 7barrack  one create warrior: 8barrack  one create warrior: 9barrack  one create warrior: 10barrack  one create warrior: 11barrack  one create warrior: 12barrack  one create warrior: 13barrack  one create warrior: 14barrack  one create warrior: 15barrack  one create warrior: 16barrack  one create warrior: 17barrack  one create warrior: 18barrack  two create warrior: 1barrack  two create warrior: 20barrack  two create warrior: 21barrack  two create warrior: 22barrack  one create warrior: 19barrack  one create warrior: 24barrack  one create warrior: 25barrack  one create warrior: 26barrack  one create warrior: 27barrack  one create warrior: 28barrack  one create warrior: 29barrack  one create warrior: 30barrack  one create warrior: 31barrack  two create warrior: 23barrack  two create warrior: 33barrack  two create warrior: 34barrack  one create warrior: 32barrack  one create warrior: 36barrack  two create warrior: 35barrack  two create warrior: 38barrack  two create warrior: 39barrack  one create warrior: 37barrack  one create warrior: 41barrack  two create warrior: 40barrack  two create warrior: 43barrack  one create warrior: 42barrack  one create warrior: 45barrack  one create warrior: 46barrack  one create warrior: 47barrack  one create warrior: 48barrack  one create warrior: 49barrack  one create warrior: 50barrack  two create warrior: 44barrack  three create warrior: 2

thread

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » java 并发编程(2)

发表回复