卖票
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.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();
}
}