java基础之线程练习题

news2024/11/20 13:35:58

1.关于线程设计,下列描述正确的是()

A.线程对象必须实现Runnable 接口

B.启动一个线程直接调用线程对象的 run()方法

C.Java 对多线程同步提供语言级的支持    synchronized

D.一个线程可以包括多个进程

2.在java 中的线程模型包含()

             A. 一个虚拟处理器(CPU) B. 的代码

            C. 操作数据 D. 以上都不是

3.有关线程,那些描述是正确的?

A.一旦一个线程被创建,它就立即开始运行  sleep

B.使用start()方法可以是一个线程成为可运行的,但它不一定立即开始运行

C.最多只能有一个线程处于就绪状态

 

D.调用sleep 方法可以让当前线程终止

4.Runnable 接口中定义了如下的哪些方法()

A.start() B. run() C. stop() D. sleep()

5.Thread 类位于以下哪一个包中()

                  A. java.lang B. java.util C. java.math D. java.util.concurrent

6.以下哪个方法是用于定于一个线程的执行体()

                  A. start() B. main() C. run() D. init()

7.线程调用sleep 方法后,线程会进入的状态是()

                  A. 就绪状态 B. 可运行状态 C. 期等状态 D. 终止状态

8.以下哪些情况可以终止当前线程的运行()

A.抛出一个异常时

B.当该线程调用sleep 方法时

C.当创建一个新的线程时

D.当线程调用join 方法时

9.关于线程,判断以下描述的是否正确

  1. Java 线程有多种不同的状态,这几种状态中的任何两种状态之间都可以相互转换。(F) 消亡
  2. 线程的启动可以执行调用 run 方法。(F)  启动start  run可以运行  
  3. 当线程所定义的 run 方法执行完毕时,线程就会终止。(T) 消亡
 
  1. 使用Thread 子类创建线程的优点是可以在子类中增加新的成员使线程具有某种属性,也可以在子类中新增加方法,使线程具有某种功能;但是 Java 不支持多继承,Thread 类的子类不能再扩展其他的类。(T)

10.仔细阅读以下代码,关于程序描述正确的是()

A.代码编译失败,因为ex2.run()无法获得执行

B.代码编译成功,存在 3 个可运行的线程

C.代码编译成功,存在 1 个可运行的线程

D.以上描述都不正确

11.仔细阅读以下代码,关于程序描述正确的是()

A.打印输出,从 0 至limit

B.无内容输出,因为没有明确调用run()方法

C.代码编译失败,因为没有正确实现 Runnable 接口

D.代码编译失败,如果声明类为抽象类,可使代码编译成功

E.代码编译失败,如果去掉implements Runnable,可使代码编译成功。

 

12.运行结果是()

A. 出错   抛出异常 B. 运行时异常

C. 正常编译运行,输出 sleep D. 正常编译运行,但没有内容输出

13.仔细阅读以下代码,将程序中不正确的地方进行改正。

package com.by.homework8Thread;


class Mythread1 {
    public void run(){

    }
}
class MyThread2 extends Thread{
    public void run() {
        for (int i = 0; i < 100; i++) {
            try {
                Thread.sleep((int)Math.random()*10000);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            System.out.println("word");
        }
    }
}


public class TestMyThread {
    public static void main(String[] args) {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    try {
                        Thread.sleep((int)Math.random()*10000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    System.out.println("hello");
                }
            }
        });
        Thread t2=new MyThread2();
        t1.start();
        t2.start();
    }
}

14.编程:创建两个线程,要求如下:(1)一个线程输出1~26,另一个线程输出A~Z(2)一个线程使用继承Thread类的写法,另一个线程使用实现Runnable接口的写法

package com.by.homework8Thread;

public class MyThread extends Thread{
    @Override
    public void run() {
        for (int i = 1; i <=26 ; i++) {
            System.out.println("继承Thread:"+i);
        }
    }
}



package com.by.homework8Thread;

public class MyRunnable implements Runnable{
    @Override
    public void run() {
        char c=0;
        for (int i = 65; i <=90 ; i++) {
            c= (char) i;
            System.out.println("实现Runnable:"+c);
        }
    }
}



package com.by.homework8Thread;

public class Test14 {
    public static void main(String[] args) {
        Thread t1=new MyThread();
        Thread t2=new Thread(new MyRunnable());
        t1.start();
        t2.start();
    }
}

15.编程:假设一个银行的ATM机,它允许用户存款也可以取款。现在一个账户(Account)上存款为200元,用户A和用户B都拥有这个账户存款和取款的权利。用户A存入100元,而用户B将取出50元,则最终账户的存款应为250元。为了模拟以上过程,描述如下:(1)定义一个Account类,属性为账户名(userName)和余额(balance),类进行封装(2)线程ThreadA负责存钱操作;线程ThreadB负责取钱操作;(3)main函数中负责开启两个线程,并将存取操作结束之后的账户余额进行打印输出

package com.by.homework8Thread;

public class Account {
    private String userName;
    private double balance;

    public Account() {
    }

    public Account(String userName, double balance) {
        this.userName = userName;
        this.balance = balance;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public double getBalance() {
        return balance;
    }

    public void setBalance(double balance) {
        this.balance = balance;
    }

    @Override
    public String toString() {
        return "Account{" +
                "userName='" + userName + '\'' +
                ", balance=" + balance +
                '}';
    }
}



package com.by.homework8Thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class AccountTest {
    public static void main(String[] args) {
        Account a=new Account("银行余额",200);
        Thread t1=new Thread(()->{
            a.setBalance(a.getBalance()+100);
        });
        Thread t2=new Thread(()->{
            a.setBalance(a.getBalance()-50);
        });
        ExecutorService es= Executors.newFixedThreadPool(2);
        es.submit(t1);
        es.submit(t2);
        es.shutdown();
        System.out.println("余额为:"+a.getBalance());
    }
}

16.编程:(1)一个线程任务打印输出100个”&&&&&&”;一个线程任务打印输出100个”***********”(2)完成以上两个线程任务之后,继续完成一个线程任务打印输出100个”~~~~~~~~~~”;一个线层任务打印输出100个”#############”

package com.by.homework8Thread;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test16 {
    public static void main(String[] args) throws InterruptedException {
        Thread t1=new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    System.out.print("&");
                }
            }
        });
        Thread t2=new Thread(()->{
            try {
                t1.join();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            for (int i = 0; i < 100; i++) {
                System.out.print("*");
            }
        });
        Thread t3=new Thread(()->{
            for (int i = 0; i < 100; i++) {
                try {

                    t2.join();
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                System.out.print("~");
            }
        });
        Thread t4=new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 100; i++) {
                    try {
                        t2.join();
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                    System.out.print("#");
                }
            }
        });
        ExecutorService es= Executors.newFixedThreadPool(2);
        es.submit(t1);
        t1.join();
        System.out.println();
        es.submit(t2);
        t2.join();
        System.out.println();
        t3.join();
        es.submit(t3);
        System.out.println();
        es.submit(t4);

        es.shutdown();
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1389385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【刷题】leetcode 1 . 两数之和

两数之和 两数之和1 思路一 &#xff08;简单突破&#xff09;2 思路二 &#xff08;进行优化&#xff09;3 思路三 &#xff08;哈希表 我还不会&#xff09; 谢谢阅读Thanks♪(&#xff65;ω&#xff65;)&#xff89;下一篇文章见&#xff01;&#xff01;&#xff01; 两数…

发票系统对接诺诺平台

诺诺平台判断设备不在线&#xff0c;导致开票失败 代码方面优化&#xff1a;调用接口的时候&#xff1a;是否先调用在线状态检测接口&#xff0c;确认开票设备是在线的状态 &#xff0c;在调用诺诺平台&#xff0c;不在线直接拦截&#xff1b;例如&#xff1a;这个原理就类似于…

三使用Docker Hub管理镜像

使用Docker Hub管理镜像 Docker Hub是Docker官方维护的Docker Registry&#xff0c;上面存放着很多优秀的镜像。不仅如此&#xff0c;Docker Hub还提供认证、工作组结构、工作流工具、构建触发器等工具来简化我们的工作。 前文已经讲过&#xff0c;我们可使用docker search 命…

虚拟机连接(与主机断开连接)U盘的按钮为灰色之解决方法

在WIN11中&#xff0c;虚拟机“连接(与主机断开连接)U盘”选项为灰色&#xff0c;解决方法如下&#xff1a; 1、关闭虚拟机电源&#xff0c;得到下面的界面&#xff1a; 2、根据上述提示&#xff0c;找到虚拟机所在磁盘 3、配置文件属性见下图&#xff1a; 4、使用记事本打开…

C++力扣题目98--验证二叉搜索树

给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#xff1a; 输入…

在Overleaf中解决IEEE LaTeX模板不能显示中文问题

解决IEEE的Latex模板不能显示中文的问题 写在最前面编译器选择XeLatex导入CTeX包IEEE单栏转换为双栏如何在Overleaf中解决IEEE LaTeX模板显示中文问题&#xff1a;一些其他的补充引言问题描述准备工作为什么中文字符在IEEE LaTeX模板中显示有问题——了解LaTeX编码的基础概念 关…

【JavaEE】CAS

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

工会排队:零撸式消费新体验,引爆市场热度

随着消费市场的日益竞争&#xff0c;消费者对于购物体验的要求也越来越高。传统的促销方式已经无法满足消费者的需求&#xff0c;于是&#xff0c;一种全新的消费模式——工会排队应运而生。这种创新的消费模式&#xff0c;让消费者在购物的同时&#xff0c;还能获得实实在在的…

Python自动化带来工资翻倍,一个小伙伴的成功之路

今年的行情大家都有所了解&#xff0c;各大五百强带头裁员优化&#xff0c;不少测试同行每天都在为保住工作而发愁。有的投简历石沉大海&#xff0c;甚至连面试机会都没有。 但是今天&#xff0c;我要给大家分享一个令人振奋的故事。关于一个工作不满3年的小伙伴&#xff0c;在…

测评自养号:如何通过销量数据优化阿里国际、eBay产品策略

作为全球顶级的跨境电商平台&#xff0c;阿里国际和eBay已经吸引了数以万计的跨境电商商家进驻。对于这些商家而言&#xff0c;持续关注自己店铺内产品的销售动态是至关重要的&#xff0c;这不仅能够帮助他们更好地了解店铺的经营状况&#xff0c;还能及时发现并解决潜在问题&a…

街机模拟游戏逆向工程(HACKROM)教程:[4]MAME的作弊功能

需要对游戏进行逆向分析&#xff0c;我们首先需要了解游戏的内存系统。在一个游戏的运行过程中&#xff0c;游戏中所有的变动&#xff0c;比如玩家的血量&#xff0c;敌人的血量&#xff0c;玩家所在位置&#xff0c;场景的位置&#xff0c;剩余时间&#xff0c;等等一切&#…

如何制作一本电子版时尚杂志

​随着数字媒体的崛起&#xff0c;电子版时尚杂志已成为一种新的时尚风向标。然而&#xff0c;如何制作一本独具特色的电子版时尚杂志&#xff0c;却让许多初涉此领域的品牌和设计师感到困惑。教你一些方法&#xff0c;制作一本电子版时尚杂志。 一、明确目标与定位 首先&…

10.云原生之在线开发调试

云原生专栏大纲 文章目录 vscode-server介绍VSCode Server 和云开发结合vscode-server安装code-server安装插件在线安装插件离线安装插件安装中文插件 配置开发环境在容器中安装开放环境Dockerfile制作镜像 git拉取项目 vscode-server介绍 VSCode Server&#xff08;Visual S…

建造者模式深入理解:演示建造单个和多个产品的实践,结合模板模式,通俗易懂

首先呢看下建造者的定义是什么样的&#xff0c;先读一遍 建造者模式 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它主要用于将一个复杂对象的构建过程与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表现形式。这种模式…

如何用Mac工具制作“苹果高管形象照”

大伙儿最近有没有刷到“苹果高管形象照”风格&#xff0c;详细说来就是&#xff1a; 以苹果官网管理层简介页面中&#xff0c;各位高管形象照为模型&#xff0c;佐以磨皮、美白、高光等修图术&#xff0c;打造的看上去既有事业又有时间有氧的证件照&#xff0c;又称“苹…

【教学类-43-21】完结篇 16宫格(4*4可算全部数字)

作品展示&#xff1a; 16宫格里面的4*4小格子可以凑满1-16&#xff0c;旁边的7宫格格2份 背景需求&#xff1a; 做完了1-20宫格的A4模板&#xff0c;最后做一个16宫格小格子&#xff08;附加7宫格2套&#xff09;的样式&#xff0c;只有4宫格&#xff08;2*2&#xff09;、9宫…

uniapp+vue3打包问题记录

**背景&#xff1a;**打包app出现问题&#xff0c;只显示底部导航的文字&#xff0c;其他一片空白 1. pages.json文件&#xff1a;tabBar中的iconPath图标格式不支持svg&#xff0c;只支持&#xff1a;png, jpg, jpeg的格式&#xff0c;当图片改为.png的时候可以正常显示 2. …

代码随想录算法训练营第6天 | 242.有效的字母异位词 , 349. 两个数组的交集 , 202. 快乐数 , 1. 两数之和

哈希知识基础 文章链接&#xff1a;https://programmercarl.com/%E5%93%88%E5%B8%8C%E8%A1%A8%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html#%E5%93%88%E5%B8%8C%E8%A1%A8 242.有效的字母异位词 题目链接&#xff1a;https://leetcode.cn/problems/valid-anagram/description/…

cv 不能正常读取中文路径

之前一直以为是PyQT的getOpenFileNames方法不能读取中文路径的。多次尝试后发现不是&#xff0c;是OpenCV的问题。 self.selected_imgPaths, _ QtWidgets.QFileDialog.getOpenFileNames(self, "打开图片", "./pending_images", "*.jpg;;*.JPG;;*.png…

C语言——实用调试技巧

一、为什么漏洞叫bug 为什么漏洞的英文是bug&#xff0c;众所周知bug有虫子的意思&#xff0c;这其实有一个很有名的故事。 1947年&#xff0c;计算机科学的先驱格蕾丝霍普&#xff08;Grace Hopper&#xff09;和她的团队在使用哈佛大学的马克二电脑时&#xff0c;发现了一个…