郑州轻工业大学Java实验五多线程编程

这篇具有很好参考价值的文章主要介绍了郑州轻工业大学Java实验五多线程编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、实验目的

1. 掌握线程类的定义和使用方法;

2. 能够解决线程调度、线程同步等问题;

3. 能够选择使用合适的线程类和接口设计多线程程序完成相关操作,解决特定问题。

二、课程目标

支撑课程目标(4):了解Java开发主流平台、工具的特点、使用方法和局限性,能够借助IDE等工具完成程序的调试、测试,敢于质疑,具有实践验证、评价优化的能力,体现软件质量意识。

三、实验任务

1. 阅读下列程序,写出运行结果,然后用Runnable接口编写程序来实现同样功能。

郑州轻工业大学Java实验五多线程编程

 

2. 创建两个线程,一个线程打印“中国”,另一个线程打印“加油”,输出如下类似效果:

中国加油加油中国加油中国中国加油加油中国…。

3. 假设有火车票1000张,创建10个线程模拟10个售票点,每个售票点100毫秒售出一张票。请模拟并打印出售票过程。注意使用synchronized确保同一张票只能卖出一次。输出格式如下:

第4售票点卖出第100张票 第2售票点卖出第101张票……

4. 假设某家银行每接受一次顾客的汇款,便可计算出当前汇款总额。若现有两个顾客,每人分3次、每次100元将钱汇入。试模拟该银行作业,输出格式如下:

顾客甲第1次存入100元,汇款总额100

顾客乙第1次存入100元,汇款总额200

顾客乙第2次存入100元,汇款总额300

任务1 代码如下:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import static java.lang.Thread.sleep;
public class TwoThreadsTest {
    public static void main(String[] args) {
           SimpleThread m=new SimpleThread();
           Thread t1=new Thread(m);
           Thread t2=new Thread(m);
           t1.setName("First");
           t2.setName("Second");
           t1.start();
           t2.start();
    }
}
class SimpleThread implements Runnable{
    public void run() {
        for(int i=0;i<10;i++)
        {
            System.out.println(i+" "+Thread.currentThread().getName());
            try{
                Thread.sleep((int) (Math.random()*1000));
            } catch (InterruptedException e) {
            }
        }
        System.out.println("DONE!"+Thread.currentThread().getName());
    }
     }

任务2代码如下:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import static java.lang.Thread.sleep;
public class TwoThreadsTest {
    public static void main(String[] args) {
           new SimpleThread("中国").start();
           new SimpleThread("加油").start();
    }
}
class SimpleThread extends Thread {
    public SimpleThread(String name) {
        super(name);
    }
public static int ticket =0;
public static Object obj=new Object();
    public void run() {
        for(int i=1;i<=10;i++)
        {
            System.out.print(getName());
            try{
                Thread.sleep(20);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
     }

任务3代码如下:

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import static java.lang.Thread.sleep;
public class TwoThreadsTest {
    public static void main(String[] args) {
      new SimpleThread("1").start();
        new SimpleThread("2").start();
        new SimpleThread("3").start();
        new SimpleThread("4").start();
        new SimpleThread("5").start();
        new SimpleThread("6").start();
        new SimpleThread("7").start();
        new SimpleThread("8").start();
        new SimpleThread("9").start();
        new SimpleThread("10").start();
    }
}
class SimpleThread extends Thread {
    public SimpleThread(String name) {
        super(name);
    }
public static int ticket =0;
public static Object obj=new Object();
    public void run() {
     while(true){
         synchronized(obj){
             if(ticket<1000){
                 try{
                     Thread.sleep(100);
                 } catch (InterruptedException e) {
                     e.printStackTrace();
                 }
                 ticket++;
                 System.out.print("第"+getName()+"售票点卖出第"+ticket+"张票"+" ");
             }
             else break;
         }
     }
        }
    }

任务4代码如下:文章来源地址https://www.toymoban.com/news/detail-481668.html

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

import static java.lang.Thread.sleep;
public class TwoThreadsTest {
    public static void main(String[] args) {
             account m=new account("顾客甲");
             account n=new account("顾客乙");
             m.start();
             n.start();
    }
}
class account extends Thread {
    public account(String name) {
        super(name);
    }

    static Lock lock = new ReentrantLock();
    public static int money = 0;
    public void run() {
        for (int i = 1; i <= 3; i++) {
            try {
                sleep(100);
            } catch (InterruptedException e) {
            }
         synchronized (Thread.class){
                money += 100;
            System.out.println("顾客" + getName() + "第" + i + "次存入100元,汇款总额" + money);
            }
        }
    }

到了这里,关于郑州轻工业大学Java实验五多线程编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 郑州轻工业大学近几年数据结构试卷

    近几年数据结构试卷: 链接:https://pan.baidu.com/s/1_ns6dbps8i6UyLN5RNJJiw?pwd=g3z2  提取码:g3z2 2019-2020(2)数据结构期末考试试卷    一、 简答题(共10题,100分)  1、已知某二叉树的先序序列和中序序列分别为ABDGEHCFI和DGBHEACIF,请画出这棵二叉树,并画出二叉树对应的森林。  

    2024年01月25日
    浏览(36)
  • 郑州轻工业大学2022-2023(2)数据结构题目集

    目录 6-1 线性表元素的区间删除                                   6-2 有序表的插入 6-3 合并两个有序数组                                          6-4 顺序表操作集 6-5 递增的整数序列链表的插入                            6

    2024年02月10日
    浏览(36)
  • LitCTF2023 郑州轻工业大学首届网络安全赛 WP 部分

    由于刚接触CTF没多久 还是属于萌新级别的(中专高中生)也没怎么打过比赛记录一下学习的过程大佬绕过即可,后续会继续加油努力。 NSSCTF平台:https://www.nssctf.cn/ PS:记得所有的 flag 都改为 NSSCTF或者LitCTF 我Flag呢? 奇怪,放哪里了,怎么看不见呢?(初级难度) 直接 F12

    2024年02月05日
    浏览(39)
  • K-01BFS(2023河南萌新联赛第(五)场:郑州轻工业大学)

    链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网   思路: 直接枚举这个图中的拐点 这个拐点是经过左右平移到上下平移或者上下平移到左右平移 假设这个点事左到右后然后再从下到上 左到右就相当于走了个最长上升子序列,然后再从下到上 从下到上的过程你可

    2024年02月13日
    浏览(39)
  • “卓见杯”郑州轻工业大学第十五届程序设计大赛暨河南省高校邀请赛题解

    C 最大的数 — 贪心 首先n个点有n条边必然有环,因此可以无限制的加数,又因为题目要求最大不超过1e9,所以答案一定是9位数 如果把形成的环缩点的话就会变成拓扑序列,首先要找到数字最大的那几个点,把他们入队,然后遍历他们的下一个点,找到下一个点里的最大值,

    2023年04月13日
    浏览(54)
  • 合肥工业大学宣城校区Java技术实验二 基于GUI的网络通信程序设计

    1.掌握Java中GUI程序的编写,包括事件监听机制。 2.掌握Java的网络通信编程,ServerSocket,Socket类的使用。 3.掌握Java中多线程的编程,Thread类,Runnable接口的使用。 4.掌握用面向对象的方法分析和解决复杂问题。 编写程序完成以下功能: 1.设计一个基于GUI的客户-服务器的

    2023年04月24日
    浏览(35)
  • 合肥工业大学计算机网络实验一

    计算机网络实验报告# ✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :hfut实验报告 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!

    2024年02月03日
    浏览(41)
  • 合肥工业大学2022大数据技术实验二

    实验序号及名称:实验 二   在 Hadoop平台上部署WordCount程序          实验时间∶ 2022 年 5 月 14 日   预习内容 一、实验目的和要求∶ 在Hadoop平台上部署WordCount程序。 二、实验任务∶ 该项任务请同学作为作业自行完成,并提交实验报告。 脱离ide环境运行wordcount 三、实验

    2024年02月04日
    浏览(29)
  • 合肥工业大学嵌入式系统原理实验报告

    ✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 : 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少努力,

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包