1、什么是线程?
2、如何实现线程?
3、Thread 类中的start() 和 run() 方法有什么区别?
4、Java中的volatile 变量是什么?
5、什么是线程安全?
6、Java中notify 和 notifyAll有什么区别?
7、为什么wait, notify 和 notifyAll这些方法不在thread类里面?
8、Java中interrupted 和 isInterruptedd方法的区别?
9、什么是线程池? 为什么要使用它?
10、如何避免死锁?
11、死锁和活锁有什么区别?
12、有三个线程T1,T2,T3,怎么确保它们按顺序执行?
13、Thread类中的yield方法有什么作用?
14、Java多线程中调用wait() 和 sleep()方法有什么不同?
牛客网笔试题
1、以下程序运行的结果为()
public class Example extends Thread{
@Override
public void run(){
try{
Thread.sleep(1000);
}catch (InterruptedException e){
e.printStackTrace();
}
System.out.print("run");
}
public static void main(String[] args){
Example example=new Example();
example.run();
System.out.print("main");
}
}
正确答案: A
A、run main
B、main run
C、main
D、run
解析:
2、假设如下代码中,若t1线程在t2线程启动之前已经完成启动。代码的输出是()
public static void main(String[]args)throws Exception {
final Object obj = new Object();
Thread t1 = new Thread() {
public void run() {
synchronized (obj) {
try {
obj.wait();
System.out.println("Thread 1 wake up.");
} catch (InterruptedException e) {
}
}
}
};
t1.start();
Thread.sleep(1000);//We assume thread 1 must start up within 1 sec.
Thread t2 = new Thread() {
public void run() {
synchronized (obj) {
obj.notifyAll();
System.out.println("Thread 2 sent notify.");
}
}
};
t2.start();
}
正确答案: B
A、Thread 1 wake up
Thread 2 sent notify.
B、Thread 2 sent notify.
Thread 1 wake up
C、A、B皆有可能
D、程序无输出卡死
3、一般有两种用于创建线程的方法,一是(),二是()。
正确答案: B D
A、从Java.lang.Thread类派生一个新的线程类,重写它的runnable()方法
B、从Java.lang.Thread类派生一个新的线程类,重写它的run()方法
C、实现Thread接口,重写Thread接口中的run()方法
D、实现Runnable接口,重写Runnable接口中的run()方法
4、有关线程的叙述正确的是()
正确答案: C D
A、可以获得对任何对象的互斥锁定
B、通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定
C、线程通过使用synchronized关键字可获得对象的互斥锁定
D、线程调度算法是平台独立的
5、下列程序的运行结果
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
pong();
}
};
t.run();
System.out.print("ping");
}
static void pong() {
System.out.print("pong");
}
正确答案: B
A、pingpong
B、pongping
C、pingpong和pongping都有可能
6、java Thread中,run方法和start方法的区别,下面说法错误的是?
正确答案: B
A、通过调用Thread类的start()方法来启动一个线程,这时此线程是处于就绪状态,并没有运行。
B、他们都可以实现了多线程运行。
C、run方法是thread的一个普通方法调用。
D、调用start方法后,一旦得到cpu时间片,就开始执行run()方法。
7、下面哪个行为被打断不会导致InterruptedException:( )?
正确答案: E
A、Thread.join
B、Thread.sleep
C、Object.wait
D、CyclicBarrier.await
E、Thread.suspend
解析:
8、Which statement is true?
void waitForSignal()
{
Object obj = new Object();
synchronized(Thread.currentThread())
{
obj.wait();
obj.notify();
}
}
正确答案: A
A、This code may throw an InterruptedException
B、This code may throw an IllegalStateException
C、This code may throw a TimeOutException after ten minutes
D、This code will not compile unless”obj.wait()”is replaced with”(Thread)obj).wait()”
E、Reversing the order of obj.wait()and obj.notify()may cause this method to complete normally
解析:
9、下面那些情况可以终止当前线程的运行?
正确答案: B
A、当一个优先级高的线程进入就绪状态时
B、抛出一个异常时
C、当该线程调用sleep()方法时
D、当创建一个新线程时
10、下列方法中哪个是线程执行的方法? ()
正确答案: A
A、run()
B、start()
C、sleep()
D、suspend()
参考博客链接
https://blog.csdn.net/fengshiguang2012/article/details/78037277
https://baijiahao.baidu.com/s?id=1567515295688177&wfr=spider&for=pc
转载请于明显处标明出处
手机扫一扫
移动阅读更方便
你可能感兴趣的文章