精华内容
下载资源
问答
  • java线程练习题
    2021-03-05 20:11:54

    java线程练习题

    java线程练习题

    知识点:

    Java的多线程,实现多线程的两种方法,线程控制、调度方法

    一、选择题

    1、什么原因可导致线程停止执行。

    A.线程调用了 wait方法;

    B.线程调用了yield方法;

    C.线程调用了 pause方法;

    D.线程调用了 sleep 方法。

    2、哪个方法是实现Runnable接口所需的?

    A.wait B.run C.stopD.update E.resume

    3、以下代码的调试结果为?

    public class Bground extends Thread{

    public static void main{

    Bground b = new Bground;

    b.run;

    }

    public void start{

    for {

    System.out.println;

    }

    }

    }

    A.编译错误,没有定义线程的run方法;

    B.由于没有定义线程的run方法,而出现运行错误;

    C. 编译通过,运行输出 values 0 to

    D. 编译通过,运行无输出

    4、 有关线程的叙述正确的有:

    A.通过继承Thread类或实现Runnable接口,可以获得对类中方法的互斥锁定。

    B. 可以获得对任何对象的互斥锁定。

    C. 线程通过调用对象的synchronized 方法可取得对象的互斥锁定。

    D. 线程调度算法是平台独立的。

    5、以下哪个是线程类的方法?

    A.yield

    B. sleep

    C. go

    D. stop

    6、 以下哪个最准确描述synchronized关键字?

    A.允许两线程并行运行,而且互相通信;

    B. 保证在某时刻只有一个线程可访问方法或对象;

    C. 保证允许两个或更多处理同时开始和结束;

    D. 保证两个或更多线程同时开始和结束。

    7、于Java语言的内存回收机制,下列选项中最正确的一项是。

    A、Java程序要求用户必须手工创建一个线程来释放内存

    B、Java程序允许用户使用指针来释放内存

    C、内存回收线程负责释放无用内存

    D、内存回收线程不能释放内存对象

    8、下列哪一个类实现了线程组?

    A、java.lang.Objict B、java.1ang.ThreadGroup

    C、Java.1ang.ThreadD、java.1ang.Runnable

    9、下列说法中错误的一项是。

    A、Applet必须全部重写其生命周期方法

    B、Applet不必全部重写其生命周期方法

    C、Applet中使用了线程,则需要重写相应的生命周期方法

    D、stop总是在destroy之前被调用。

    10、在java程序中,下列关于线程的说法错误的是:

    A、run方法是运行线程的主体

    B、多个进程运行时执行顺序是按顺序执行的

    C、如果线程死亡,它便不能运行

    D、在java中,高优先级的可运行线程会抢占低优先级线程

    11、关于JDBC访问数据库的说法错误的是:

    A、建立数据库连接时,必须加载驱动程序,可采用Class.forName实现

    B、 用于建立与某个数据源的连接可采用DriverManager类的getConnection方法

    C、建立数据库连接时,必须要进行异常处理

    D、JDBC中查询语句的执行方法必须采用Statement类实现

    12、运行下列程序, 会产生什么结果

    public class X extends Thread implements Runable{

    public void run{

    System.out.println”);

    }

    public static void main

    {

    Thread t=new Thread);

    t.start;

    }

    }

    A) 第一行会产生编译错误 B) 第六行会产生编译错误

    C) 第六行会产生运行错误 D) 程序会运行和启动

    13、下面哪个方法可以在任何时候被任何线程调用?

    A)

    更多相关内容
  • JAVA线程练习题及答案.pdf
  • java线程练习题

    2021-08-21 16:18:47
    两个线程打印ABC 1.两个线程打印ABC public class NameList { private List names = new ArrayList(); public synchronized void add(String name) { names.add(name); } public synchronized void printAll()...

    1.两个线程打印ABC

    public class NameList
    {
        private List names = new ArrayList();
        public synchronized void add(String name)
        {
            names.add(name);
        }
        public synchronized void printAll() {
            for (int i = 0; i < names.size(); i++)
            {
                System.out.print(names.get(i) + ””);
            }
        }
    
        public static void main(String[]args)
        {
            final NameList sl = new NameList();
            for (int i = 0; i < 2; i++)
            {
                new Thread()
                {
                    public void run()
                    {
                        sl.add(A);
                        sl.add(B);
                        sl.add(C);
                        sl.printAll();
                    }
                } .start();
            }
        }
    }
    

    在这里插入图片描述

    t1: A B C t2:A B C ->ABCABCABC
    ABC的顺序是一定的,但是t1和t2的顺序是不一定的
    相当于两个线程并发执行,
    t1:A B C 打印 至少三个以后才会开始打印 最多6个
    比如:
    A1 A2 B1 C1——AABC AABCBC
    A1 B1 A2 C1——ABAC ABACBC

    s2只会顺序打印剩下的 所以只看s1的可能就行

    A B C 打印

    也就是s1打印3个字母 有1种结果
    ABC
    s1打印4个字母 有3种结果
    AABC
    ABAC
    ABCA

    s1打印5个字母 有5种结果
    AABCB
    AABBC
    ABABC
    ABCAB
    ABACB
    s1打印6个字母
    A B C 打印
    AABCBC
    AABBCC
    ABABCC
    ABCABC

    对应结果:
    ABC ABCABC——对应E

    AABC AABCBC
    ABAC ABACBC
    ABCA ABCABC——对应G

    AABCB AABCBC
    AABBC AABBCC
    ABABC ABABCC
    ABCAB ABCABC
    ABACB ABACBC

    AABCBC AABCBC
    AABBCC AABBCC
    ABABCC ABABCC
    ABCABC ABCABC

    F选项 在输出C之前,最多只能有两个A

    展开全文
  • JAVA线程练习题的答案。都是一些基本的练习题。对初学者有帮助
  • java线程练习题及答案

    2021-03-05 20:11:55
    java线程练习题及答案 线程与线程类 1 线程的概念 线程的概念来源于计算机的操作系统的进程的概念。进程是一个程序关于某个数据集 的一次运行。也就是说,进程是运行中的程序,是程序的一次运行活动。 线程和进程的...

    41528d3028836879cd698677c3999917.gifjava线程练习题及答案

    线程与线程类 1 线程的概念 线程的概念来源于计算机的操作系统的进程的概念。进程是一个程序关于某个数据集 的一次运行。也就是说,进程是运行中的程序,是程序的一次运行活动。 线程和进程的相似之处在于,线程和运行的程序都是单个顺序控制流。有些教材将线 程称为轻量级进程(light weight process)。线程被看作是轻量级进程是因为它运行在一个程 序的上下文内,并利用分配给程序的资源和环境。 作为单个顺序控制流,线程必须在运行的程序中得到自己运行的资源,如必须有自己 的执行栈和程序计数器。线程内运行的代码只能在该上下文内。因此还有些教程将执行上 下文(cution context)作为线程的同义词。 所有的程序员都熟悉顺序程序的编写,如我们编写的名称排序和求素数的程序就是顺 序程序。顺序程序都有开始、执行序列和结束,在程序执行的任何时刻,只有一个执行点。 线程(thread)则是进程中的一个单个的顺序控制流。单线程的概念很简单,如图 1所示。 多线程(multi-thread)是指在单个的程序内可以同时运行多个不同的线程完成不同的 任务,图 2说明了一个程序中同时有两个线程运行。 图 1 单线程程序示意图 图 2 多线程程序示意图 有些程序中需要多个控制流并行执行。例如, for(int i = 0; i < 100; i++)System.out.println(“Runner A = “ + i); for(int j = 0; j < 100; j++ )System.out.println(“Runner B = “+j); 上面的代码段中,在只支持单线程的语言中,前一个循环不执行完不可能执行第二个 循环。要使两个循环同时执行,需要编写多线程的程序。 很多应用程序是用多线程实现的,如 Hot Java Web 浏览器就是多线程应用的例子。在 Hot Java 浏览器中,你可以一边滚动屏幕,一边下载 Applet 或图像,可以同时播放动画和 声音等。 2 Thread 类和 Runnable 接口 多线程是一个程序中可以有多段代码同时运行,那么这些代码写在哪里,如何创建线 程对象呢? 首先,我们来看 Java 语言实现多线程编程的类和接口。在 java.lang 包中定义了 Runnable 接口和 Thread 类。 一个线程 两个线程Runnable 接口中只定义了一个方法,它的格式为:  public abstract void run() 这个方法要由实现了 Runnable 接口的类实现。Runnable 对象称为可运行对象,一个线 程的运行就是执行该对象的 run()方法。 Thread 类实现了 Runnable 接口,因此 Thread 对象也是可运行对象。同时 Thread 类也 是线程类,该类的构造方法如下:  public Thread()  public Thread(Runnable target)  public Thread(String name)  public Thread(Runnable target, String name)  public Thread(ThreadGroup group, Runnable target)  public Thread(ThreadGroup group, String name)  public Thread(ThreadGroup group, Runnable target, String name) target 为线程运行的目标对象,即线程调用 start()方法启动后运行那个对象的 run()方法, 该对象的类型为 Runnable,若没有指定目标对象,则以当前类对象为目标对象;name 为线 程名,group 指定线程属于哪个线程组(有关线程组的概念请参考 9.6节) 。 Thread 类的常用方法有:  public static Thread currentThread() 返回当前正在执行的线程对象的引用。  public void setName(String name) 设置线程名。  public String getName() 返回线程名。  public static void sleep(long millis) throws InterruptedException  public static void sleep(long millis, int nanos) throws InterruptedException 使当前正在执行的线程暂时停止执行指定的毫秒时间。指定时间过后,线程继续执 行。该方法抛出 InterruptedException 异常,必须捕获。  public void run() 线程的线程体。  public void start() 由 JVM 调用线程的 run()方法,启动线程开始执行。  public void setDaemon(boolean on) 设置线程为 Daemon 线程。  public boolean isDaemon() 返回线程是否为 Daemon 线程。  public static void yield() 使当前执行的线程暂停执行,允许其他线程执行。  public ThreadGroup getThreadGroup() 返回该线程所属的线程组对象。  public void interrupt() 中断当前线程。  public boolean isAlive() 返回指定线程是否处于活动状态。线程的创建 本节介绍如何创建和运行线程的两种方法。线程运行的代码就是实现了 Runnable 接口 的类的 run()方法或者是 Thread 类的子类的 run()方法,因此构造线程体就有两种方法:  继承 Thread 类并覆盖它的 run()方法;  实现 Runnable 接口并实现它的 run()方法。继承 Thread 类创建线程 通过继承 Thread 类,并覆盖 run()方法,这时就可以用该类的实例作为线程的目标对 象。下面的程序定义了 SimpleThread 类,它继承了 Thread 类并覆盖了 run()方法。 程序SimpleThread.javapublic class SimpleThread extends Thread{public SimpleThread(String str){super(str); } public void run(){for(int i=0; i<100; i++){System.out.println(getName()+“ = “+ i);try{sleep((int)(Math.random()*100));}catch(InterruptedException e){}} System.out.println(getName()+ “ DONE“); } } __________________________________________

    展开全文
  • //练习题 //生产者(Producer) 将产品交给店员(Clerk) 而消费者(Customer)从店员处取走商品 // 店员一次只能持有固定数量的产品(比如20) 如果生产者试图生产更多的产品 // 店员会叫生产者停一停 如果店中有...
    //练习题
     //生产者(Producer) 将产品交给店员(Clerk) 而消费者(Customer)从店员处取走商品
     // 店员一次只能持有固定数量的产品(比如20) 如果生产者试图生产更多的产品
     // 店员会叫生产者停一停 如果店中有空位 再通知生产者 继续生产
     // 如果店中没有了产品 店员会告诉消费者等一下
     // 如果店中有了产品 再通知消费者取走产品
     // 分析1. 是否是多线程问题 ? 是 生产者线程 消费者线程
     // 2. 是否有共享数据? 是 店员(或产品)
     // 3. 如何解决线程安全问题?
     // 4. 是否涉及到线程通信? 是
    
     Clerk clerk = new Clerk();
     Producer producer = new Producer(clerk);
     Customer customer = new Customer(clerk);
     Thread thread2 = new Thread(producer);
     Thread thread3=new Thread(customer);
     Thread thread4=new Thread(producer);
     thread2.setName("生产者1");
     thread3.setName("消费者1");
     thread4.setName("生产者2");
     thread2.start();
     thread4.start();
     thread3.start();

    package com.day7.test;
    
    /**
     * User: Json
     * Date: 2021/8/20
     * 生产者
     **/
    public class Producer implements  Runnable{
        private Clerk clerk;
        public Producer(Clerk clerk){
            this.clerk=clerk;
        }
        @Override
        public void run() {
            while (true){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                this.clerk.pro();
            }
    
        }
    }
    

    package com.day7.test;
    
    /**
     * User: Json
     * Date: 2021/8/20
     * 店员
     **/
    public class Clerk {
          private int num=0;
    
        //生产商品
        public synchronized void pro(){
    
                if(num<20){
                    num++;
                    System.out.println(Thread.currentThread().getName()+"生产的第"+num+"产品");
                    notify();
                }else{
                    try {
                        wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
    
    
        }
    
        //消费商品
        public synchronized void Cus(){
    
                if(num>0){
                    System.out.println(Thread.currentThread().getName()+"消费了第"+num+"个产品");
                    num--;
                    notify();
                }else{
                    try {
                        wait();
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
    
        }
    
    
    }
    

    package com.day7.test;
    
    /**
     * User: Json
     * Date: 2021/8/20
     * 消费者
     **/
    public class Customer implements Runnable{
        private Clerk clerk;
        public Customer(Clerk clerk){
            this.clerk=clerk;
        }
        @Override
        public void run() {
            while (true){
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                this.clerk.Cus();
            }
    
    
        }
    
    
    }
    
    展开全文
  • 50道Java线程面试分析及答案

    千次阅读 2021-02-12 09:46:22
    下面是Java线程相关的热门面试,你可以用它来好好准备面试。1) 什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以...
  • java线程面试及答案

    2022-04-04 11:02:47
    1)2017Java面试及答案:什么是线程 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,...
  • 线程——java练习题

    2022-04-29 01:54:28
    import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; /** * 题目:两个储户分别向同一个帐户存3000元,每次存1000,存三次。每次存完打印账户余额。 * * @author Cao ...
  • Java 线程部分习题及解析

    千次阅读 2021-12-17 16:33:27
    下列关于线程的说法中,错误的是( ) A、线程就是程序 B、线程是一个程序的单个执行流 C、多线程用于实现线程并发程序 D、多线程是指一个程序的多个执行流 2、 下列关于进程和线程的说法中,错误的是( ) A、操作...
  • java线程-习题

    千次阅读 2022-04-26 18:53:26
    线程-习题 一. 单选(共9,63.9分) 1.(单选) 线程通过( )方法可以休眠一段时间,然后恢复运行。 A. A run() B. B setPrority() C. C yield() D. D sleep() 我的答案:D正确答案:D 7.1分 ...
  • java基础之多线程练习题,博客访问地址: http://blog.csdn.net/u014028392/article/details/76906801
  • java线程练习题

    千次阅读 2019-06-18 11:11:57
    * 设计一个多线程的程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况。 * */ public class Test1 { public static void ...
  • 线程练习题java

    2015-11-09 22:08:03
    java线程初学者练习题目,供初学者练习使用
  • JavaSE多线程练习题

    2021-04-12 16:04:24
    JavaSE多线程练习题简答题1判断填空简答题2编程参考文献 简答题1 1.java中有几种方法可以实现一个线程(jdk5.0之前)?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 有两种实现方法,分别是继承...
  • java异常处理练习题

    2018-08-17 11:10:20
    java异常练习题,北大青鸟学士后课后练习,主要是异常处理的小测验
  • Java线程练习题

    热门讨论 2008-11-21 09:00:27
    这是对Java线程的一些相关练习题 包括选择 填空 简答 编程等题型
  • 1、请问 如何控制多线程顺序执行 1、使用join 控制 package com.example.demothread.util; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PathVariable; /** * @author...
  • JAVA线程学习笔记及练习题**案例:三个线程间的通讯**一、判断题二、选择题 1、java中有几种方法可以实现一个线程(jdk5.0之前)?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现...
  • Java高级特性 - 多线程练习题

    千次阅读 2021-01-17 11:29:53
    请仔细阅读右侧代码,在 Begin-End 区域内进行代码补充,使线程依照先后顺序依次输出JavaThread+线程名。 提示:我们知道线程的执行结果是随机的,什么时候执行线程是看哪一个线程抢占到了CPU的资源,现在请你利用所...
  • java线程面试选择大全含答案1.下面程序的运行结果()(选择一项)public static void main(String[] args) {Thread t=new Thread(){public void run(){pong();}};t.run();System.out.println("ping");}static ...
  • Java线程练习题.docx

    2020-04-05 11:13:51
    Java线程习题 一选择 什么原因可导致线程停止执行( ) 线程调用了wait)方法 线程调用了yield)方法 线程调用了pause)方法 线程调用了sleep)方法 哪个方法是实现Runnable接口所需的( ) A. wait) Brun) Cstop) D...
  • java-线程同步习题

    2021-08-02 17:01:12
    线程同步习题目录前言题目1题目2题目3题目4 目录 前言 这是我从网上找到的题目,代码我自己打的,只注重了功能,代码的效率或者其他的都没有考虑太多。 题目1 基础概念 请描述Thread类中的start()方法与run()方法...
  • java线程基础知识练习题,选择题及代码题。适合初学者
  • 请仔细阅读右侧代码,在 Begin-End 区域内进行代码补充,使线程依照先后顺序依次输出JavaThread+线程名。 提示:我们知道线程的执行结果是随机的,什么时候执行线程是看哪一个线程抢占到了CPU的资源,现在
  • 创建订单对象,调用main函数中的prodece(order1)方法 3.prodece(Order order) (1)使用随机数生成工人数 5-8 (2)生成任务 (3)生成线程:使用数组和循环 (4)创建及开启线程:循环 start() (5)等待所有人...
  • 共九章内容: 第 1 章 Java概述 第 2 章 Java语言基础 第 3 章 类的封装、继承和多态 第 4 章 接口、内部类和 Java API 基础 ...第 7 章 多线程 第 8 章 Applet 应用程序 第 9 章 输入/输出流和文件操作

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,852
精华内容 7,540
关键字:

java线程练习题