会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 133662个问题

老师,请问下这样写的话比较麻烦吗

package com.bjsxt.线程同步;


public class TestSyncThread {
    public static void main(String[] args) {
        Program p = new Program();
        p.setName("Mokura");
        Thread thread = new Thread(new Working(p));
        Thread thread1 = new Thread(new Bought(p));
        thread.start();
        thread1.start();
        System.out.println("主线程结束");
    }
}
class Program {
    String name;
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Program{" +
                "name='" + name + '\'' +
                '}';
    }
}
class Working implements Runnable{
    private Program program;

    public Working(Program p) {
        this.program = p;
    }

    @Override
    public void run() {
        synchronized (this.program){
        try {
            System.out.println(program.getName() + "先去找工作");
            Thread.sleep(1000);
            System.out.println(program.getName() + "辛苦工作一个月");
            Thread.sleep(1000);
            System.out.println(program.getName() + "发工资啦!!!!");
            Thread.sleep(1000);
        }catch (Exception e){e.printStackTrace();}
    }
    }
}
class Bought implements Runnable{
    private Program program;

    public Bought(Program p) {
        this.program = p;
    }
    @Override
    public void run() {
        synchronized (this.program){
        try {
            System.out.println(this.program.getName()+"去超市转了");
            Thread.sleep(1000);
            System.out.println(this.program.getName()+"看中了2022-Bilibili春节限定花嫁手办");
            Thread.sleep(1000);
            System.out.println("心满意足的回家了");
        }catch (Exception e){e.printStackTrace();}
        }
    }
}

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1007楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1010楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/IO 流技术(旧) 1011楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1015楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1016楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1017楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 1018楼

public class TestThread extends Thread{
    public TestThread(){
        System.out.println(this.getName());
    }

    /**
     * 线程的线程体
     */
    @Override
    public void run() {
        System.out.println(this.getName()+"线程开始");
        for (int i=0;i<20;i++){
            System.out.println(this.getName()+""+i);
        }
        System.out.println(this.getName()+"线程结束");
    }

    public static void main(String[] args) {
        System.out.println("主线程开始");
        //实例化线程
        TestThread t1 =new TestThread();
        TestThread t2 =new TestThread();
        //启动线程
        t1.start();
        t2.start();
        System.out.println("主线程结束");
    }
}

主线程开始

Thread-0

Thread-1

主线程结束

Thread-0线程开始

Thread-1线程开始

Thread-00

Thread-10

Thread-01

Thread-11

Thread-02

Thread-12

Thread-03

Thread-13

Thread-04

Thread-14

Thread-15

Thread-16

Thread-17

Thread-18

Thread-19

Thread-110

Thread-111

Thread-112

Thread-05

Thread-113

Thread-06

Thread-114

Thread-07

Thread-115

Thread-08

Thread-116

Thread-09

Thread-117

Thread-010

Thread-118

Thread-011

Thread-119

Thread-012

Thread-013

Thread-014

Thread-015

Thread-016

Thread-017

Thread-018

Thread-019

Thread-0线程结束

Thread-1线程结束



老师  为什么我输出的代码不是按顺序的,代码很乱  类似交替?是不是就是前面讲的时间片轮询算法

JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 1020楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637