Educoder--Java高级特性 - 多线程基础(2)常用函数

注意啦!!!!这期的复制又恢复正常了

第一题

有三种原因可以导致线程不能运行,它们是( )
A、等待
B、阻塞
C、休眠
D、挂起及由于I/O操作而阻塞
Java语言中提供了一个( )线程,自动回收动态分配的内存。
A、异步
B、消费者
C、守护
D、垃圾收集
当( )方法终止时,能使线程进入死亡状态
A、run
B、setPrority
C、yield
D、sleep
用( )方法可以改变线程的优先级。
A、run
B、setPrority
C、yield
D、sleep
线程通过( )方法可以休眠一段时间,然后恢复运行
A、run
B、setPrority
C、yield
D、sleep
下列关于线程的说法正确的是( )
A、如果线程死亡,它便不能运行
B、在Java中,高优先级的可运行线程会抢占低优先级线程
C、线程可以用yield方法使低优先级的线程运行
D、一个线程可以调用yield方法使其他线程有机会运行

1、ABC
2、D
3、A
4、B
5、D
6、ABD

第二题

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:
创建自定义线程,实现求第num项斐波那契数列的值num从0开始,并且在main函数中获取子线程最终计算的结果。

package step2;

import java.util.Scanner;

public class Task {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		//请在此添加实现代码
     /********** Begin **********/
        Thread t=new MyThread("子线程",num);
        t.start();

    /********** End **********/
		
		
	}
}


		//请在此添加实现代码
   /********** Begin **********/
class MyThread  extends Thread   {
        private int num;
		private String name;
		public MyThread(String name,int num){
			this.num=num;
			this.name=name;
		}
     public void run(){
		 int[] arr=new int[2];
		 arr[0]=1;
		 arr[1]=1;
		 for(int i=2;i<num;i++){
			 int tmp=arr[1];
			 arr[1]=arr[0]+arr[1];
			 arr[0]=tmp;

		 }
		 System.out.println("子线程计算结果为:"+arr[1]);
	 }
		
}

   /********** End **********/

第三题

请仔细阅读右侧代码,根据方法内的提示,在Begin - End区域内进行代码补充,具体任务如下:
建立三个线程,A线程打印5次E,B线程打印5次D,C线程打印5次U,要求线程同时运行,交替打印5次EDU。

package step3;

public class MyThread implements Runnable {   
	   //请在此添加实现代码
	/********** Begin **********/
	private String name;
	private Object prev;
	private Object self;
	private MyThread(String name,Object prev,Object self){
		this.name = name;
		this.prev = prev;
		this.self = self;
	}
	public void run(){
		int count = 5;
		while(count>0){
			synchronized(prev){
				synchronized(self){
					System.out.print(name);
					count--;
					self.notify();
				}
				try {
                    prev.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
				}
			}
		}
		System.exit(0);
	}
 	public static void main(String[] args) throws Exception {   
        Object a = new Object();
        Object b = new Object();
        Object c = new Object();
		MyThread ta = new MyThread("E",c,a);
		MyThread tb = new MyThread("D",a,b);
		MyThread tc = new MyThread("U",b,c);

		new Thread(ta).start();
		Thread.sleep(100);
		new Thread(tb).start();
		Thread.sleep(100);
		new Thread(tc).start();
		Thread.sleep(100);
    }   
	/********** End **********/   
}

我活在世上,
无非想要明白些道理,遇见些有趣的事,
倘能如我愿,我的一生就算成功。

交个朋友,随缘认识。
我是谁?
一个普通大学生
你可以收获什么?
内容不多,你想看什么?可以告诉我!

你可能感兴趣的:(Educoder)