java面试

2021-02-19 15:20

阅读:646

标签:关系   thread   唤醒   运行   java   两种   unp   依赖   消息   

1.java多线程

1.1--java多线程通信?

多线程并发编程时,难免会遇到线程间的通信问题。线程通信方式的思想大体上来说可以分为两种:共享和传递

共享的实现方式可以是共享变量、共享文件、数据库、网络等。传递的实现方式可以是消息队列、生产者-消费者模型等。

(1)共享变量:

                 使用volatile 关键字定义共享变量  private static volatile Boolean odd = true。

                  多个线程同时监听一个变量,当这个变量发生变化的时候 ,线程能够感知并执行相应的业务。

                  volatile 保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。

(2)使用Object类的wait() 和 notify() 方法:

                 wait和 notify必须配合synchronized使用,wait方法释放锁,notify方法不释放锁。

(3)基本LockSupport实现线程间的阻塞和唤醒:

                 LockSupport.park();                  阻塞

                 LockSupport.unpark(threadB); 唤醒

 

1.2--java多线程实现方式?

(1)继承Thread类创建线程。

(2)实现Runnable接口创建线程。    多,多实现单继承。

(3)java的Executors线程池。减少对象创建, 提供定时执行、定期执行、单线程、并发数控制等功能。

 

1.4--java什么是线程池?

创建线程需要花费资源和时间,如果等任务来创建线程那么响应时间就变长。

在程序启动时创建线程来响应处理就是线程池。

 

1.5--java多线程start()与run()方法区别?

start():Thread类start()来启动一个线程,这时此线程是处于就绪状态, 并没有运行。 然后通过此Thread类调用方法run()来完成其运行。

             run()称为线程体,它包含了要执行的这个线程的内容。

run(): run()方法当作普通方法的方式调用,程序还是要顺序执行。没有达到多线程目的。

 

1.6--java多线程中wait()与sleep()区别?

(1)wait是Object方法,sleep是线程方法。

(2)wait会释放锁,sleep不释放锁。

(3)wait需要依赖synchronized关键字,sleep方法不依赖于同步器synchronized。

 

2.java基础

1.1--java多态?

不同类的对象对同一消息作出不同的响应就叫做多态。

多态存在的三个条件:

                        (1)有继承关系。

                        (2)子类重写父类方法。

                        (3)父类引用指向子类对象,父类调用方法会调用子类重写后方法。FU fu=new ZI();

 

1.2--java中final关键字?

(1)final成员变量表示常量,只能被赋值一次,赋值后值不再改变。

(2)final方法不能被子类的方法重写,但可以被继承。

(3)final类不能被继承,没有子类,final类中的方法默认是final的。

 (4)final不能用于修饰构造方法。

 

1.3--java中static关键字?

(1)静态变量。类加载只为分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问。

(2)静态方法。静态方法可以直接通过类名调用。静态方法不能访问非静态方法。

(3)static代码块。类加载的时候就会依次执行一次静态代码块。

 

java面试

标签:关系   thread   唤醒   运行   java   两种   unp   依赖   消息   

原文地址:https://www.cnblogs.com/chong-zuo3322/p/12684741.html


评论


亲,登录后才可以留言!