Java基础巩固系列 多线程

概念:

进程与多线程:

何时需要多线程:

多线程代码练习示例1:

//模拟火车站售票窗口,开启三个窗口售票,总票数为100张
public class TestWindow {

    public static void main(String[] args) {
        Window window1 = new Window();
        Window window2 = new Window();
        Window window3 = new Window();

        window1.setName("窗口1");
        window2.setName("窗口2");
        window3.setName("窗口3");

        window1.start();
        window2.start();
        window3.start();
    }

}

class Window extends Thread {
    private static int ticket = 100;

    @Override
    public void run() {
        while (true) {
            if (ticket > 0) {
                System.out.println(Thread.currentThread().getName() + "售出的票号为:" + ticket--);
            } else {
                System.out.println(Thread.currentThread().getName() +"的售票已结束");
                break;
            }
        }
    }
}

结果:

窗口1售出的票号为:100
窗口1售出的票号为:99
窗口1售出的票号为:98
窗口1售出的票号为:97
窗口1售出的票号为:96
窗口1售出的票号为:95
窗口1售出的票号为:94
窗口1售出的票号为:93
窗口1售出的票号为:92
窗口1售出的票号为:91
窗口1售出的票号为:90
窗口1售出的票号为:89
窗口1售出的票号为:88
窗口1售出的票号为:87
窗口1售出的票号为:86
窗口1售出的票号为:85
窗口1售出的票号为:84
窗口1售出的票号为:83
窗口1售出的票号为:82
窗口1售出的票号为:81
窗口1售出的票号为:80
窗口1售出的票号为:79
窗口1售出的票号为:78
窗口1售出的票号为:77
窗口1售出的票号为:76
窗口1售出的票号为:75
窗口1售出的票号为:74
窗口1售出的票号为:73
窗口1售出的票号为:72
窗口1售出的票号为:71
窗口1售出的票号为:70
窗口1售出的票号为:69
窗口1售出的票号为:68
窗口1售出的票号为:67
窗口1售出的票号为:66
窗口1售出的票号为:65
窗口1售出的票号为:64
窗口1售出的票号为:63
窗口1售出的票号为:62
窗口1售出的票号为:61
窗口1售出的票号为:60
窗口1售出的票号为:59
窗口1售出的票号为:58
窗口1售出的票号为:57
窗口1售出的票号为:56
窗口2售出的票号为:55
窗口1售出的票号为:54
窗口2售出的票号为:53
窗口1售出的票号为:52
窗口2售出的票号为:51
窗口1售出的票号为:50
窗口2售出的票号为:49
窗口1售出的票号为:48
窗口2售出的票号为:47
窗口1售出的票号为:46
窗口2售出的票号为:45
窗口2售出的票号为:43
窗口2售出的票号为:42
窗口2售出的票号为:41
窗口2售出的票号为:40
窗口2售出的票号为:39
窗口2售出的票号为:37
窗口2售出的票号为:36
窗口2售出的票号为:35
窗口2售出的票号为:34
窗口2售出的票号为:33
窗口2售出的票号为:32
窗口2售出的票号为:31
窗口2售出的票号为:30
窗口2售出的票号为:29
窗口2售出的票号为:28
窗口2售出的票号为:27
窗口2售出的票号为:26
窗口2售出的票号为:25
窗口2售出的票号为:24
窗口2售出的票号为:23
窗口1售出的票号为:44
窗口2售出的票号为:22
窗口3售出的票号为:38
窗口2售出的票号为:20
窗口1售出的票号为:21
窗口2售出的票号为:18
窗口3售出的票号为:19
窗口3售出的票号为:15
窗口3售出的票号为:14
窗口3售出的票号为:13
窗口3售出的票号为:12
窗口3售出的票号为:11
窗口3售出的票号为:10
窗口3售出的票号为:9
窗口3售出的票号为:8
窗口3售出的票号为:7
窗口3售出的票号为:6
窗口3售出的票号为:5
窗口3售出的票号为:4
窗口3售出的票号为:3
窗口3售出的票号为:2
窗口3售出的票号为:1
窗口3的售票已结束
窗口2售出的票号为:16
窗口2的售票已结束
窗口1售出的票号为:17
窗口1的售票已结束 

多线程代码练习示例2:

/模拟火车站售票窗口,开启三个窗口售票,总票数为100张
public class TestWindow1 {

    public static void main(String[] args) {
        Window1 w = new Window1();
        Thread thread1 = new Thread(w);
        Thread thread2 = new Thread(w);
        Thread thread3 = new Thread(w);

        thread1.setName("窗口1");
        thread2.setName("窗口2");
        thread3.setName("窗口3");

        thread1.start();
        thread2.start();
        thread3.start();
    }

}

class Window1 implements Runnable {
    int ticket = 100;

    @Override
    public void run() {
        while (true) {
            if (ticket > 0) {
                System.out.println(Thread.currentThread().getName() + "票号:" + ticket--);
            } else {
                System.out.println(Thread.currentThread().getName() + ":" + "卖完了");
                break;
            }
        }
    }
}

结果:

窗口1票号:100
窗口2票号:99
窗口1票号:98
窗口1票号:96
窗口1票号:95
窗口2票号:97
窗口2票号:93
窗口2票号:92
窗口2票号:91
窗口1票号:94
窗口1票号:89
窗口1票号:88
窗口1票号:87
窗口1票号:86
窗口1票号:84
窗口1票号:83
窗口1票号:82
窗口1票号:81
窗口1票号:80
窗口1票号:79
窗口1票号:78
窗口1票号:77
窗口1票号:76
窗口1票号:75
窗口1票号:74
窗口2票号:90
窗口1票号:73
窗口3票号:85
窗口3票号:70
窗口3票号:69
窗口3票号:68
窗口3票号:67
窗口3票号:66
窗口3票号:65
窗口3票号:64
窗口3票号:63
窗口3票号:62
窗口3票号:61
窗口1票号:71
窗口2票号:72
窗口1票号:59
窗口3票号:60
窗口1票号:57
窗口2票号:58
窗口1票号:55
窗口3票号:56
窗口1票号:53
窗口2票号:54
窗口1票号:51
窗口1票号:49
窗口1票号:48
窗口1票号:47
窗口1票号:46
窗口1票号:45
窗口1票号:44
窗口1票号:43
窗口1票号:42
窗口1票号:41
窗口1票号:40
窗口1票号:39
窗口1票号:38
窗口1票号:37
窗口1票号:36
窗口1票号:35
窗口1票号:34
窗口1票号:33
窗口1票号:32
窗口1票号:31
窗口1票号:30
窗口1票号:29
窗口1票号:28
窗口1票号:27
窗口1票号:26
窗口1票号:25
窗口1票号:24
窗口1票号:23
窗口1票号:22
窗口3票号:52
窗口1票号:21
窗口2票号:50
窗口1票号:19
窗口3票号:20
窗口1票号:17
窗口2票号:18
窗口1票号:15
窗口3票号:16
窗口3票号:12
窗口3票号:11
窗口3票号:10
窗口3票号:9
窗口3票号:8
窗口3票号:7
窗口3票号:6
窗口3票号:5
窗口3票号:4
窗口3票号:3
窗口3票号:2
窗口3票号:1
窗口3:卖完了
窗口1票号:13
窗口1:卖完了
窗口2票号:14
窗口2:卖完了

猜你喜欢

转载自blog.csdn.net/Peter__Li/article/details/89056625