java-线程同步习题

目录

前言

这是我从网上找到的题目,代码我自己打的,只注重了功能,代码的效率或者其他的都没有考虑太多。

题目1

  1. 基础概念
    1. 请描述Thread类中的start()方法与run()方法的区别。
      线程对象调用run方法不开启线程,仅是对象调用方法。线程对象调用start方法,会开启线程,并让jvm调用run方法在开启的线程中执行。

    2. 请描述创建线程的两种方式。

      • 继承Thread类
        1. 也就是创建Thread子类,并且重写run方法,run方法中的方法体的就是该线程要执行的任务
        2. 创建Thread子类实例
        3. 调用线程对象的start方法
      • 创建一个类并且实现Runnable接口
        • 重写该接口的run方法,方法体就是该线程要执行的任务
        • 创建实现Runnable接口的对象,即线程对象
        • 创建Thread类的对象,并且把线程对象作为Thread构造函数的参数
        • 利用Thread对象调用start方法

题目2

  1. 请编写程序,分别打印主线程的名称和子线程的名称。
    要求使用两种方式实现:
    第一种方式:继承Thread类。
    第二种方法:实现Runnable接口。

方式一代码:

public class ExtendThread extends Thread{
    public ExtendThread(String name) {
        super(name);
    }

    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

方式二代码:

public class ImpRunable implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
    }
}

题目3

  1. 请描述实现Runnable接口比继承Thread类所具有的优势:
    1. 适合多个相同的程序代码的线程去共享同一个资源
    2. 可以避免java中的单继承的局限性
    3. 增加程序的健壮性,实现解耦操作,代码可以被多个线程共享,代码和数据独立
    4. 线程池只能放入实现Runnable或者是callable类线程,不能直接放入继承Thread的类

题目4

  1. 请描述在线程的生命周期中, 有几种状态呢 ?

    1. 新建:线程刚被创建,但是并未启动
    2. 可运行:线程可以在java虚拟机中运行的状态,可能正在运行自己代码,也可能没有,这取决于操作系统处理器
    3. 锁阻塞:当一个线程试图获取一个对象锁,而该对象锁被其他的线程持有,则该线程进入Blocked状态,当该线程持有锁时,该线程将变成Runnable状态。
    4. 无限等待:一个线程在等待另一个线程执行一个唤醒动作时,该线程进入waiting状态。进入这个状态后是不能自动唤醒的,必须等待另一个线程调用notify或者notifyAll方法才能唤醒。
    5. 计时等待:同waiting状态,有几个有超时参数,调用他们将进入Timed Waiting状态。这一状态一直保持到超时期或者接受唤醒通知。带有超时参数的常用方法有Thread.sleep,Object.wait
    6. 被终止
      因为run方法正常退出而死亡,或者因为没有捕获的异常终止了run方法而死亡。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java是一种面向对象的编程语言,具有广泛的应用和较高的开发效率。下面列举一些Java的知识点以及相关的练习题。 1. 基本语法:掌握Java的关键字、变量、数据类型、运算符等基本语法,并通过编写程序练习。 2. 控制语句:了解if-else语句、for循环、while循环、switch语句等控制语句的用法,并编写相关程序进行练习。 3. 数组:掌握Java的数组使用方法,包括声明数组、初始化数组、访问数组元素等,并编写相应程序加深理解。 4. 方法:了解如何定义方法、调用方法以及传递参数,并编写包含方法的程序进行实操。 5. 类和对象:掌握面向对象的概念,了解如何定义类、创建对象、使用成员变量和成员方法等,并通过编写类和对象相关的程序进行练习。 6. 继承和多态:了解继承和多态的概念,明确子类和父类的关系,掌握方法的重写和重载,并通过编写相关的继承和多态的程序进行练习。 7. 异常处理:了解异常处理的机制,掌握try-catch-finally语句的使用,并通过编写包含异常处理的程序进行练习。 8. 输入输出:了解如何从键盘输入数据,并将结果输出到屏幕或文件中,并通过编写相关的输入输出程序进行练习。 9. 集合框架:了解Java提供的各种集合类,如ArrayList、LinkedList、HashSet、HashMap等,掌握它们的用法,并通过编写相关程序进行练习。 10. 线程:了解线程的概念,掌握如何创建和启动线程,并了解线程同步和线程通信的方法,并通过编写相关的线程程序进行练习。 以上是一些Java的知识点以及相应的练习题,通过不断的学习和实践,可以更好地掌握和应用Java编程技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值