Java线程知识点总结:
线程的概念:线程是程序中的一个执行流程,一个进程中可以有多个线程同时执行。
创建线程的两种方式:
- 继承Thread类,重写run()方法;
- 实现Runnable接口,实现run()方法,将Runnable对象作为参数传递给Thread类的构造方法。
启动线程的方式:
- 调用Thread类的start()方法;
- 调用Runnable对象的Thread类的构造方法,然后调用Thread类的start()方法。
线程的状态:
- 新建(New):线程对象被创建后的状态;
- 就绪(Runnable):线程对象调用start()方法后,等待系统分配CPU资源的状态;
- 运行(Running):线程获得CPU资源并执行的状态;
- 阻塞(Blocked):线程在等待某个条件满足时的状态;
- 等待(Waiting):线程在等待其他线程执行某个操作(如通知、等待锁等)时的状态;
- 超时等待(Timed Waiting):线程在等待某个条件满足且超过指定时间时的状态;
- 终止(Terminated):线程执行完毕或异常终止的状态。
线程同步:当多个线程需要访问共享资源时,可以使用synchronized关键字或者Lock接口来实现线程同步,避免出现数据不一致的问题。
死锁:当两个或多个线程互相持有对方所需的资源,导致它们都无法继续执行时,就会发生死锁。要避免死锁,可以使用synchronized关键字的公平锁和非公平锁,或者使用Lock接口的tryLock()方法。
线程间通信:线程间可以通过共享变量、wait()、notify()和notifyAll()方法进行通信。
线程池:为了提高性能和减少资源消耗,可以使用线程池来管理线程。Java提供了两种线程池实现:ThreadPoolExecutor和ScheduledThreadPoolExecutor。