购物网站建设包括哪些,免费做那个的视频网站好,域名购买需要多少钱,洛阳网红每日一题-Java核心-谈谈你对线程的理解【面试八股文】 Java线程是Java程序中的执行单元。一个Java程序可以同时运行多个线程#xff0c;每个线程可以独立执行不同的任务。线程的执行是并发的#xff0c;即多个线程可以同时执行。
1. 线程的特点 Java中的线程有如下的特点 轻… 每日一题-Java核心-谈谈你对线程的理解【面试八股文】 Java线程是Java程序中的执行单元。一个Java程序可以同时运行多个线程每个线程可以独立执行不同的任务。线程的执行是并发的即多个线程可以同时执行。
1. 线程的特点 Java中的线程有如下的特点 轻量级线程的创建和销毁的开销相对较小可以创建大量的线程。 共享内存多个线程可以共享同一块内存区域这使得线程之间可以方便地进行数据通信。 独立调度每个线程的执行是由操作系统进行调度的线程的调度是非确定性的也就是说无法预测线程的执行顺序。
2.线程的创建方式 继承Thread类创建一个继承自Thread类的子类并重写run()方法在run()方法中定义线程的任务。然后通过调用子类的start()方法来启动线程。 实现Runnable接口创建一个实现了Runnable接口的类并实现其run()方法在run()方法中定义线程的任务。然后通过创建Thread对象将实现了Runnable接口的对象作为参数传入并调用Thread对象的start()方法来启动线程。
3.线程的状态 线程的状态也是面试中会问的比较多的。 新建状态New线程对象被创建后但还没有调用start()方法时的状态。 就绪状态Runnable线程对象调用start()方法后进入就绪状态表示线程可以被调度执行。 运行状态Running线程被调度执行后进入运行状态。 阻塞状态Blocked线程在执行过程中可能因为某些原因被阻塞例如等待输入输出、线程休眠等。 结束状态Terminated线程执行完任务后进入结束状态。
图例如下 4.线程间的通信
Java中线程间通信的方式有以下几种 wait()和notify()方法wait()方法使线程进入等待状态直到其他线程调用notify()或notifyAll()方法将其唤醒。notify()方法唤醒一个等待中的线程notifyAll()方法唤醒所有等待中的线程。 wait(long timeout)和notify()方法wait(long timeout)方法使线程进入等待状态直到其他线程调用notify()方法将其唤醒或者等待时间超过指定的timeout时间。notify()方法唤醒一个等待中的线程。 join()方法join()方法使一个线程等待另一个线程执行完毕。当一个线程调用另一个线程的join()方法时当前线程将被阻塞直到另一个线程执行完毕。 Lock和Condition接口Lock接口提供了比synchronized关键字更灵活的锁机制Condition接口提供了更灵活的等待/通知机制。通过Lock接口的lock()方法获取锁unlock()方法释放锁通过Condition接口的await()方法使线程等待signal()方法唤醒一个等待中的线程signalAll()方法唤醒所有等待中的线程。 BlockingQueue阻塞队列BlockingQueue是一个支持阻塞操作的队列当队列为空时获取元素的线程将被阻塞直到队列中有可用元素当队列满时插入元素的线程将被阻塞直到队列有空闲位置。