首页 >> 大全

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

2024-01-02 大全 18 作者:考证青年

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

题目:

实现流程

相关知识

进程和线程

线程安全

注意事项:

文件、包位置(路径)

代码:

.java文件

.java文件

效果截图:

总结

题目:

限时问题抢答小程序功能概述:三个人在给定的时间内限时抢答给定的多道题目,每道题目限时 2000 ms。每道题目只能被一个人抢答,抢答者答对得 20 分,答错扣 10 分,没抢到题目的人既不扣分也不得分。 要实现限时抢答,我们需要解决以下问题:

30秒抢答器__抢答题环节

实现流程 相关知识 进程和线程

进程是指在操作系统中正在运行的一个应用程序(比如运行的 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();     // 创建锁对象Long  starttime = 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定义好的。

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了限时问题抢答小程序功能概述和代码实现。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了