java、头歌实验 限时问题抢答小程序

提示:文章写完后 , 目录可以自动生成,如何生成可参考右边的帮助文档
目录
题目:
实现流程
相关知识
进程和线程
线程安全
注意事项:
文件、包位置(路径)
代码:
.java文件
.java文件
效果截图:
总结
【java、头歌实验限时问题抢答小程序】题目:
限时问题抢答小程序功能概述:三个人在给定的时间内限时抢答给定的多道题目,每道题目限时 2000 ms 。每道题目只能被一个人抢答,抢答者答对得 20 分,答错扣 10 分,没抢到题目的人既不扣分也不得分 。要实现限时抢答,我们需要解决以下问题:

java、头歌实验  限时问题抢答小程序

文章插图
实现流程相关知识进程和线程
进程是指在操作系统中正在运行的一个应用程序(比如运行的 QQ、微信、电脑管家等),线程是指进程内独立执行某个任务的一个单元(比如电脑管家的清理垃圾、电脑加速等) 。
创建线程的方式
创建线程示例: 定义类实现接口 。
public class ThreadTest implements Runnable {// 定义类实现Runnable接口// 重写Runnable接口的run方法@Overridepublic void run() {// 线程执行体for(int i=0;i<5;i++){// 输出线程名System.out.println(Thread.currentThread().getName());} }}
// 创建对象
public static void main(String[] args) throws IOException, ClassNotFoundException {// 创建ThreadTest对象ThreadTest threadTest = new ThreadTest();// 将ThreadTest对象作为参数创建Thread对象Thread thread = new Thread(threadTest);// 启动线程thread.start();}
执行结果:
线程安全
线程安全是什么:线程安全是指多个线程在执行同一段代码(代码中有共享变量)的时候采用加锁机制,使每次的执行结果和单线程执行的结果是一样的 , 不存在执行结果的二义性 。线程不安全就是不提供加锁机制保护,有可能出现多个线程先后更改数据 , 造成所得到的数据是脏数据 。实现线程安全的三种方式:
同步代码块格式:
synchronized(锁对象){// 可能出现线程安全问题的代码(访问了共享数据的代码)}
同步代码的应用实例:
public class ThreadTest implements Runnable {// 定义类实现Runnable接口// 定义一个锁对象Object obj=new Object();// 重写run方法@Overridepublic void run() {// 同步代码块synchronized (obj){// 可能出现线程安全的代码}}
注意事项:
1.同步代码块中的锁对象,可以使用任意的对象;
2.必须保证多个线程使用的锁对象是同一个;
3.锁对象的作用是把同步代码块锁住,只让一个线程在同步代码块中执行 。
文件、包位置(路径)
其中,step是Java项目 , step1是包,.java为主类,.java为测试类 。
代码: .java文件
package step1;import java.util.Random;import java.util.Scanner;public class MyThread implements Runnable{// 获取给定限时时间Scanner scanner = new Scanner(System.in);Long time= scanner.nextLong();// 请在Begin-End间编写代码/********** Begin **********/// 定义变量Long endtime;// 答题结束时间int n=1;// 题目编号int zsscore=0;// 张三分数int lsscore=0;// 李四分数int wwscore=0;// 王五分数// 创建锁对象、计算答题开始时间以及题目个数Object obj=new Object();// 创建锁对象Longstarttime = System.currentTimeMillis();Long num=time-2000*2;// 题目个数// 重写run方法,输出每道题分别被谁抢到了,抢到的人答题是否正确以及当前所有人的得分@Overridepublic void run() {long endtime = starttime + 1000;// 确保初次循环结束时间大于起始时间while(endtime-starttime
.java文件
package step1;import java.io.*;import java.util.Arrays;import java.util.Scanner;public class FileTest {public static void main(String[] args) throws IOException, ClassNotFoundException {// 请在Begin-End间编写代码/********** Begin **********/// 创建MyThread对象,启动三个线程模拟三人作答MyThread myThread = new MyThread();Thread people = new Thread(myThread);people.setName("张三");// 给线程命名Thread people1 = new Thread(myThread);people1.setName("李四");Thread people2 = new Thread(myThread);people2.setName("王五");people.start();// 启动线程people1.start();people2.start();/********** End **********/}}
效果截图:
提示:
题数=(输入的数值)/2000;前面.java定义好的 。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了限时问题抢答小程序功能概述和代码实现 。