java---线程相关练习

  1. 简述程序、进程和线程之间的关系?什么是多线程程序?
    答:程序:程序就是一段代码,一组指令的集合,不能单独运行,需要将其加载到内存中,系统为他分配资源后才能执行(,运行时就相当于一个进程。静态的实体)
    进程:进程就是系统分配资源调用的一个独立单位。是程序的一次动态执行,从加载到执行到执行完毕是一个完整的过程,并且有自己的生命周期。(动态的实体)
    线程:线程依赖于进程存在,一个线程相当于进程的某个任务。
    多线程程序:一个程序运行时(进程)产生了不止一个线程,执行的路径有多条,就叫多线程

  2. 什么是线程调度?Java的线程调度采用什么策略?
    答:线程调度:对处于可运行状态的多个线程对象进行系统级的协调,防止多个线程争用有限资源而导致系统死机或者崩溃
    java的线程调度采用的策略:java 的调度策略是基于线程优先级的抢先式调度。意思就是,谁的优先级高那我就先给谁使用系统资源。

  3. 如何在Java程序中实现多线程?
    答: Java中实现多线程有三种方式,
    1)定义一个类继承自Thread类,重写run方法,然后创建这个类的对象,然后通过对象调用start方法启动线程。
    2)定义一个类实现Runnable接口,重写run方法,然后创建一个这个类的子类对象,然后建Thread类的对象,
    将子类对象作为参数进行传递,然后通过start方法启动线程。
    3)线程池,使用ExecutorService、Callable、Future实现有返回结果的多线程。
    4)JDK5以后新增了一个Executors工厂类来产生线程池,利用工厂类调用newFixedThreadPool方法,
    创建一个线程池对象,然后用线程池对象调用submit方法,传入的参数是一个实现了Callable接口的子类,
    重写了里面的call方法,submit方法相当于start方法,是用于启动线程的。

  4. 试简述Thread类的子类或实现Runnable接口两种方法的异同?
    答:(1)继承Thread类,实现步骤
    1)自定义一个类,继承自Thread类,然后重写里面的run方法
    2)在主线程中创建自定义类的实例对象,通过调用start方法启动线程
    (2)实现Runnable接口,步骤
    1)自定义一个类实现Runnable接口并重写里面的run方法
    2)在主线程中创建此类的实例对象
    3)创建Thread类的实例对象,将自定义类的实例对象作为参数进行传递
    4)通过start方法启动线程
    这两个方法的共同点就是子类重写run方法,但是继承是重写Thread中的run方法,实现接口是Runnable中的run方法。
    而且都需要start来启动线程,继续是通过其创建的子类对象来调用的,接口是将子类对象作为参数来传递给Thread,然后通过Thread的对象来调用start启动的。

  5. 说明缓冲流的优点和原理
    答:缓冲流的优点:提高了效率,把要操作的数据放进缓冲区,然后一次性把缓冲区的内容写到目的地,而不是写一次就往目的地写一次.
    缓冲流原理:缓冲区就是内存里的一块区域,把数据先存内存里,然后一次性写入,类似数据库的批量操作,这样效率比较高。

  6. 在Java中wait()和sleep()方法的不同?
    答:区别1:wait方法是在Object类中,而sleep方法是Thread类中
    区别2:sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,
    当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。

     而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,
     只有针对此对象调用notify()方法后本线程才进入对象锁定池准备,获取对象锁进入运行状态。
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值