java线程与并发编程-Thread和Runnable

1.给出线程的定义
线程就是一条在程序代码中独立执行的路径

2.给出runnable的定义
一个runnable就是一段封装在对象中的代码序列,它的类实现了Runnable接口

3.Thread类和Runnable接口完成了什么
Thread类提供了一个底层操作系统线程架构的统一接口
Runnable接口为关联Thread对象的线程提供执行代码

4.指出创建一个Runnable对象的两种方式
创建一个实现了Runnable接口的匿名类或者使用lambda表达式

5.指出关联一个Runnable到一个Thread对象的两种方式
把一个runnable传递到Thread类的接收runnable参数的构造函数
或者在构造函数不接收runnable参数的时候继承Thread类继而后重写它的void run()方法
由于Thread实现了Runnable接口,所以Thread对象也是runnables

6.指出5种Thread的状态
线程名称、线程存活的标志、线程的可执行状态、线程的优先级、该线程是否为守护线程的标识

7.判断对错:默认的线程名字会以Thd-作为前缀

默认的线程名称以Thread-前缀开头

8.如何给线程赋予非默认的名称
通过调用接收线程名称的Thread构造函数或者void setName(String name)方法

9.如何确定线程是死是活
通过调用Thread的boolean isAlive()方法判断一条线程是否活着

10.指出Thread.State枚举的所有常量
Thread.State枚举的常量包括NEW(该状态下线程还没有开始执行), RUNNABLE(该状态下线程正在JVM中执行),BLOCKED(该状态下线程被阻塞,正在等待一个监听锁),WAITING(该状态下线程无限制地等待另外一个线程执行特定的操作), TERMINATED(该状态下线程已经退出)

11.如何获取当前线程的执行状态
通过调用Thread的Threa.State getState()方法获取当前的线程执行状态

12.给出优先级的定义
线程的相对重要性

13.如何通过setPriority()来影响应用程序跨操作系统的可移植性
使用setPriority()会影响应用程序在操作系统之间的可移植性,因为不同的调度器会采取不同的方式来处理优先级

14.确定Thread的void setPriority(int priority)方法参数的取值范围
传递给优先级的值介于Thread.MIN_PRIORITY和Thread.MAX_PRIORITY之间

15.判断对错:当应用程序的最后一个非守护线程死亡之后,守护线程也会自动死亡以使得应用程序退出

16.在一个正在运行或者已经死亡的Thread对象上调用Thread的void start()方法会发生什么
如果这个线程之前已经启动运行或者已经死亡,这个方法就会抛出java.lang.lIlegalThreadStateException

17.如何在Windows上停止一个无法终止的程序
为了终止无限运行的应用程序,可以在Windows或者非Windows系统上同时按住Ctrl和C键

18.确定组成Thread中断机制的所有方法
void interrupt()、static boolean interrupted()、boolean isInterrupted()

19.判断对错:boolean isInterrupted()方法清除了线程所有的中断状态

boolean isInterrupted()方法并不会清除线程的中断状态
这个中断状态并不会受到影响

20.当线程中断了,该线程会如何反映
抛出InterruptedException

21.给出忙循环的定义
设计来消耗时间的一条循环语句

22.指出让一个线程等待另一个线程直至死亡的Thread方法
void join()、void join(long millis)、void join(long millis,int nanos)

23.指出让一条线程睡眠的Thread方法
void sleep(long millis)、void sleep(long millis,int nanos)

24.编写一个名称为IntSleep的应用程序,其创建一条后台线程,不断地打印出Hello,之后睡眠100ms
在睡眠了2s之后,默认主线程应该中断后台线程,此线程在打印出interrupted之后跳出循环

public class IntSleep {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            @Override
            public void run() {
                while (true) {
                    System.out.println("hello");
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        // e.printStackTrace();
                        System.out.println("interrupted");
                        break;
                    }
                }
            }
        };

        Thread thread = new Thread(r);
        thread.start();
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        thread.interrupt();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值