多线程练习题


卖票

在这里插入图片描述

Thread线程类

package demo1;

public class Ticket extends Thread{

    public static int num=100;

    @Override
    public void run() {
        while(true){

            synchronized (Ticket.class){
                if(num>0){
                    System.out.println(getName()+"卖第 "+num+" 张门票");
                    num--;
                    try {
                    	//线程休眠一段时间
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }else{
                    break;
                }
            }


        }
    }
}

测试类

package demo1;

public class Main {
    public static void main(String[] args) {

        Ticket t1=new Ticket();
        Ticket t2=new Ticket();
        t1.start();
        t2.start();
    }
}

运行结果

D:\Program\JDK17.0.9\bin\java.exe "-javaagent:D:\Program\IDEA202303\IntelliJ IDEA 2023.3\lib\idea_rt.jar=5665:D:\Program\IDEA202303\IntelliJ IDEA 2023.3\bin" -Dfile.encoding=UTF-8 -classpath E:\WorkSpace\IDEA\Java\DuoXianChengDemo\DuoXianChengDemo\target\classes demo1.Main
Thread-0卖第 100 张门票
Thread-0卖第 99 张门票
Thread-0卖第 98 张门票
Thread-0卖第 97 张门票
Thread-0卖第 96 张门票
Thread-0卖第 95 张门票
Thread-0卖第 94 张门票
Thread-0卖第 93 张门票
Thread-0卖第 92 张门票
Thread-0卖第 91 张门票
Thread-0卖第 90 张门票
Thread-0卖第 89 张门票
Thread-0卖第 88 张门票
Thread-0卖第 87 张门票
Thread-0卖第 86 张门票
Thread-1卖第 85 张门票
Thread-1卖第 84 张门票
Thread-1卖第 83 张门票
Thread-1卖第 82 张门票
Thread-1卖第 81 张门票
Thread-1卖第 80 张门票
Thread-0卖第 79 张门票
Thread-1卖第 78 张门票
Thread-0卖第 77 张门票
Thread-0卖第 76 张门票
Thread-0卖第 75 张门票
Thread-0卖第 74 张门票
Thread-0卖第 73 张门票
Thread-0卖第 72 张门票
Thread-0卖第 71 张门票
Thread-0卖第 70 张门票
Thread-1卖第 69 张门票
Thread-1卖第 68 张门票
Thread-1卖第 67 张门票
Thread-0卖第 66 张门票
Thread-0卖第 65 张门票
Thread-1卖第 64 张门票
Thread-1卖第 63 张门票
Thread-1卖第 62 张门票
Thread-0卖第 61 张门票
Thread-0卖第 60 张门票
Thread-0卖第 59 张门票
Thread-0卖第 58 张门票
Thread-0卖第 57 张门票
Thread-0卖第 56 张门票
Thread-0卖第 55 张门票
Thread-0卖第 54 张门票
Thread-0卖第 53 张门票
Thread-0卖第 52 张门票
Thread-0卖第 51 张门票
Thread-0卖第 50 张门票
Thread-0卖第 49 张门票
Thread-0卖第 48 张门票
Thread-0卖第 47 张门票
Thread-0卖第 46 张门票
Thread-0卖第 45 张门票
Thread-0卖第 44 张门票
Thread-0卖第 43 张门票
Thread-0卖第 42 张门票
Thread-1卖第 41 张门票
Thread-1卖第 40 张门票
Thread-0卖第 39 张门票
Thread-0卖第 38 张门票
Thread-0卖第 37 张门票
Thread-0卖第 36 张门票
Thread-0卖第 35 张门票
Thread-0卖第 34 张门票
Thread-0卖第 33 张门票
Thread-1卖第 32 张门票
Thread-1卖第 31 张门票
Thread-1卖第 30 张门票
Thread-0卖第 29 张门票
Thread-0卖第 28 张门票
Thread-0卖第 27 张门票
Thread-0卖第 26 张门票
Thread-1卖第 25 张门票
Thread-0卖第 24 张门票
Thread-0卖第 23 张门票
Thread-0卖第 22 张门票
Thread-0卖第 21 张门票
Thread-0卖第 20 张门票
Thread-1卖第 19 张门票
Thread-1卖第 18 张门票
Thread-1卖第 17 张门票
Thread-1卖第 16 张门票
Thread-1卖第 15 张门票
Thread-1卖第 14 张门票
Thread-1卖第 13 张门票
Thread-1卖第 12 张门票
Thread-1卖第 11 张门票
Thread-1卖第 10 张门票
Thread-0卖第 9 张门票
Thread-1卖第 8 张门票
Thread-1卖第 7 张门票
Thread-1卖第 6 张门票
Thread-1卖第 5 张门票
Thread-0卖第 4 张门票
Thread-0卖第 3 张门票
Thread-0卖第 2 张门票
Thread-1卖第 1 张门票

进程已结束,退出代码为 0



送礼物

在这里插入图片描述

Thread线程类

package demo1;

public class Ticket extends Thread{
    
    public static int num=100;
    
    @Override
    public void run() {
        while(true){

            synchronized (Ticket.class){
                if(num>10){
                    System.out.println(getName()+"送 "+num);
                    num--;
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }else{
                    break;
                }
            }


        }
    }
}

测试类

package demo1;

public class Main {
    public static void main(String[] args) {

        Ticket t1=new Ticket();
        Ticket t2=new Ticket();
        t1.setName("小张");
        t2.setName("小   王");
        t1.start();
        t2.start();

    }
}

运行结果

D:\Program\JDK17.0.9\bin\java.exe "-javaagent:D:\Program\IDEA202303\IntelliJ IDEA 2023.3\lib\idea_rt.jar=5739:D:\Program\IDEA202303\IntelliJ IDEA 2023.3\bin" -Dfile.encoding=UTF-8 -classpath E:\WorkSpace\IDEA\Java\DuoXianChengDemo\DuoXianChengDemo\target\classes demo1.Main
小张送 100
小张送 99
小张送 98
小张送 97
小张送 96
小张送 95
小张送 94
小张送 93
小张送 92
小张送 91
小张送 90
小张送 89
小张送 88
小   王送 87
小   王送 86
小   王送 85
小   王送 84
小   王送 83
小   王送 82
小   王送 81
小   王送 80
小   王送 79
小   王送 78
小   王送 77
小   王送 76
小   王送 75
小张送 74
小   王送 73
小   王送 72
小   王送 71
小   王送 70
小   王送 69
小   王送 68
小张送 67
小张送 66
小张送 65
小张送 64
小   王送 63
小   王送 62
小   王送 61
小张送 60
小张送 59
小张送 58
小   王送 57
小张送 56
小张送 55
小张送 54
小   王送 53
小张送 52
小   王送 51
小张送 50
小张送 49
小张送 48
小张送 47
小   王送 46
小   王送 45
小   王送 44
小   王送 43
小   王送 42
小   王送 41
小   王送 40
小   王送 39
小   王送 38
小   王送 37
小   王送 36
小   王送 35
小   王送 34
小   王送 33
小   王送 32
小   王送 31
小   王送 30
小   王送 29
小   王送 28
小   王送 27
小   王送 26
小   王送 25
小   王送 24
小   王送 23
小   王送 22
小   王送 21
小张送 20
小张送 19
小张送 18
小张送 17
小张送 16
小张送 15
小张送 14
小张送 13
小张送 12
小张送 11

进程已结束,退出代码为 0



打印奇数数字

在这里插入图片描述

Thread线程类

package demo1;
public class MyThread extends Thread{

    public static int num=0;

    @Override
    public void run() {

        while(true){
            
            synchronized (MyThread.class){
                if(num<=100){
                    if(num%2==1){
                        try {
                            Thread.sleep(100);
                        } catch (InterruptedException e) {
                            throw new RuntimeException(e);
                        }
                        System.out.println(getName()+"   "+num);
                    }else{
                        System.out.println(num);
                    }
                    num++;
                }else{
                    break;
                }
            }
        }

    }
}

测试类

package demo1;

public class Main {
    public static void main(String[] args) {

        MyThread t1=new MyThread();
        MyThread t2=new MyThread();
        t1.setName("小张");
        t2.setName("小   王");
        t1.start();
        t2.start();

    }
}

运行结果

D:\Program\JDK17.0.9\bin\java.exe "-javaagent:D:\Program\IDEA202303\IntelliJ IDEA 2023.3\lib\idea_rt.jar=6107:D:\Program\IDEA202303\IntelliJ IDEA 2023.3\bin" -Dfile.encoding=UTF-8 -classpath E:\WorkSpace\IDEA\Java\DuoXianChengDemo\DuoXianChengDemo\target\classes demo1.Main
0
小张   1
2
小张   3
4
小张   5
6
小张   7
8
小张   9
10
小张   11
12
小张   13
14
小张   15
16
小张   17
18
小张   19
20
小张   21
22
小   王   23
24
小   王   25
26
小   王   27
28
小   王   29
30
小   王   31
32
小   王   33
34
小   王   35
36
小   王   37
38
小   王   39
40
小   王   41
42
小   王   43
44
小   王   45
46
小   王   47
48
小   王   49
50
小   王   51
52
小   王   53
54
小   王   55
56
小   王   57
58
小   王   59
60
小   王   61
62
小   王   63
64
小   王   65
66
小张   67
68
小张   69
70
小   王   71
72
小   王   73
74
小   王   75
76
小张   77
78
小张   79
80
小张   81
82
小张   83
84
小张   85
86
小张   87
88
小张   89
90
小张   91
92
小张   93
94
小张   95
96
小张   97
98
小张   99
100

进程已结束,退出代码为 0



抢红包

在这里插入图片描述

Thread线程类

package demo1;


import java.util.Random;

public class MyThread extends Thread {


    //共享的金额
    public static double money = 100;
    //红包的个数
    public static int count = 3;
    //最小的金额
    public static final double MIN = 0.01;

    @Override
    public void run() {

        while (true) {

            synchronized (MyThread.class) {
                if(count==0){
                    System.out.println(getName()+"没抢到红包");
                }else{
                    //抽取到了红包
                    if(count==1){
                        System.out.println(getName()+"抢到红包,金额:"+money);
                        money=0;
                        count=0;
                    }else{
                        Random random=new Random();
                        count--;
                        double num=money-MIN*count;
                        double price=random.nextDouble(num);
                        if(price<=MIN){
                            price=MIN;
                        }
                        System.out.println(getName()+"抢到红包,金额:"+price);
                        money=money-price;

                    }
                }


            }
        }

    }
}

测试类

package demo1;

import abc.MyThread;

import java.util.Random;

public class Main {
    public static void main(String[] args) {

        MyThread t1=new MyThread();
        MyThread t2=new MyThread();
        MyThread t3=new MyThread();
        MyThread t4=new MyThread();
        MyThread t5=new MyThread();
//        t1.setName("小张");
//        t2.setName("小   王");
        t1.start();
        t2.start();
        t3.start();
        t4.start();
        t5.start();



    }
}

抽奖箱

在这里插入图片描述

Thread线程类

package demo1;


import java.util.ArrayList;
import java.util.Collections;

public class MyThread extends Thread {


    public static ArrayList<Integer> list;


    public MyThread(int[] nums) {
        list = new ArrayList<>();
        for (int num : nums) {
            list.add(num);
        }

    }


    @Override
    public void run() {


        while (true) {
            synchronized (MyThread.class) {

                if (list.isEmpty()) {
                    break;
                } else {
                    //打乱集合
                    Collections.shuffle(list);
                    int money = list.remove(0);
                    System.out.println(getName() + "   " + money);
                }


            }
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
        }


    }
}

测试类

package demo1;
import java.util.Random;

public class Main {
    public static void main(String[] args) {
        int[] nums=new int[]{1,2,3,4,5,6,7,8,9,10};
        MyThread t1=new MyThread(nums);
        MyThread t2=new MyThread(nums);
        t1.setName("    1 ");
        t1.start();
        t2.start();
    }
}

相关推荐

  1. Rust 实战练习 - 5. 线进程,协

    2024-05-12 13:54:05       17 阅读
  2. Linux线

    2024-05-12 13:54:05       51 阅读
  3. 线

    2024-05-12 13:54:05       41 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 13:54:05       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 13:54:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 13:54:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 13:54:05       18 阅读

热门阅读

  1. C#识别图片数字

    2024-05-12 13:54:05       8 阅读
  2. C++的数据结构(一)

    2024-05-12 13:54:05       6 阅读
  3. 【视频/图像数据格式】基本视频/图像数据格式

    2024-05-12 13:54:05       7 阅读
  4. 了解WebSocket

    2024-05-12 13:54:05       12 阅读
  5. MapReduce

    MapReduce

    2024-05-12 13:54:05      7 阅读
  6. js方法 Array.prototype.slice()

    2024-05-12 13:54:05       10 阅读