• JavaSE 基础 第58节 线程同步问题的由来


    2016-07-01

    1 线程同步问题的由来
    多个线程共享资源没有进行控制

    package com.java1995;
    /**
     * 打印机类
     * @author Administrator
     *
     */
    public class Print {
        
        /**
         * 
         * @param name 学生姓名
         * @param eScore 英语成绩
         * @param mScore 数学成绩
         * @param yScore 语文成绩
         */
        public void printScore(String name,int eScore,int mScore,int yScore){
            System.out.println(name+"的英语成绩:"+eScore);
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(name+"的数学成绩:"+mScore);
            System.out.println(name+"的语文成绩:"+yScore);
    
        }
    
    }
    package com.java1995;
    /**
     * 老师类
     * @author Administrator
     *
     */
    public class Teacher implements Runnable{
        //封装
        private Print p;
        private String name;
        private int eScore,mScore,yScore;
        
        public Teacher(Print p,String name,int eScore,int mScore,int yScore){
            this.p=p;
            this.name=name;
            this.eScore=eScore;
            this.mScore=mScore;
            this.yScore=yScore;
        }
    
        //封装的实现
        public Print getP() {
            return p;
        }
    
        public void setP(Print p) {
            this.p = p;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int geteScore() {
            return eScore;
        }
    
        public void seteScore(int eScore) {
            this.eScore = eScore;
        }
    
        public int getmScore() {
            return mScore;
        }
    
        public void setmScore(int mScore) {
            this.mScore = mScore;
        }
    
        public int getyScore() {
            return yScore;
        }
    
        public void setyScore(int yScore) {
            this.yScore = yScore;
        }
        
        //重写run()方法
        @Override
        public void run() {
            // TODO Auto-generated method stub
            p.printScore(name, eScore, mScore, yScore);
        }
        
        
    
    }
    package com.java1995;
    
    public class Test {
        
        public static void main(String[] args) {
            
            Print p=new Print();
            Teacher t1=new Teacher(p,"博尔特",10,11,12);
            Teacher t2=new Teacher(p,"加特林",23,56,1);
            Teacher t3=new Teacher(p,"苏炳添",34,55,90);
            
            Thread th1=new Thread(t1);
            Thread th2=new Thread(t2);
            Thread th3=new Thread(t3);
            th1.start();
            th2.start();
            th3.start();
    
        }
    
    }

    【参考资料】

    [1] Java轻松入门经典教程【完整版】

  • 相关阅读:
    centos7 做rails 执行rails server 报错
    centos 7 安装 rvm 超时
    centos7 打造基于python语言Selenium2自动化开发环境
    RubyMine8 安装
    linux 下安装 RZ SZ命令 以及使用
    centos 7.2 安装mysql 修改 初始密码
    win10系统配置FTP
    Windows环境安装MySQL8.0.11
    IntelliJ IDEA 2017 上传本地项目至码云
    IntelliJ IDEA 2017.3 搭建一个多模块的springboot项目(三)
  • 原文地址:https://www.cnblogs.com/cenliang/p/5634271.html
Copyright © 2020-2023  润新知