java线程 --- 一道迅雷笔试题 (一)

来源:互联网 发布:数据洞察 编辑:程序博客网 时间:2024/04/30 05:05

Java线程,让人爱恨交加。下面通过迅雷公司的笔试题,来谈谈Java线程

 

一、线程的五种状态

使用Java能方便的写出多线程代码,如果在使用前能了解线程运行时的各种状态,对于理解线程编程会有很大助益
下面从一个示意图来了解一下线程状态:

当一个线程被创建后,调用它的start()方法,使其进入可运行状态,也就说调用完start方法后线程并不会立即运行,而是处于就绪状态。一旦进入运行状态,就会有三种结果:
1、线程执行完毕(死亡)
2、线程由于各种原因,比如说睡眠、运行超时、更高优先级的线程进入、IO等待或join等等,这个时候则暂停运行。
3、在线程运行过程中,调用了某一对象的wait方法,直到其它线程调用此对象的notify或notifyAll 方法,使当前线程恢复可运行状态。可   运行状态指的是java的线程调度器已经通知了操作系统,将这个线程安排到就绪队列,等待CPU执行。


二、线程的概念
     通俗的理解:线程不是一行代码,也不是一个方法,它是一个执行序列。所有代码都在这个序列当中一步步执行至到结束。

 

三、在java中创建线程有两种方法
    1、继承Thread 重写run方法
    2、实现Runnable接口 实现其中的run 方法

 

前面三点了解一下先,接下来看迅雷公司的这道笔试题:

有三个线程ID分别是A、B、C,请有多线编程实现,在屏幕上循环打印10次ABCABC…

第一种方法如下:

第二种方法如下:

以上两种方法都未写注释,第一种方法使用线程中的join() 达到目的,第二种方法就是同步对象

 

对于线程的各种状态、线程间的通信、线程组、线程池等等,下回分解

 

 

原创粉丝点击