java基础线程总结

如果还有重要资料需要加入,请查看的各位帮忙备注


1. 创建线程有几种方式,分别是?

2. 怎么获取当前线程?
3. 阐述下线程的生命周期?
4. 线程运行状态之间的协调方式?
5. 如何将线程设置为后台线程,后台线程跟前台线程的结束关系?
6. 设定线程优先级的方法是?
7. 当有多个线程使用同一个资源时,解决线程同步的方法又哪些?
8. 怎么建立线程之间的管道通信?
9. 如何实现线程分组管理?
10. 线程的异常处理流程?
11. JKD为提供了几种线程池,分别是?
12. 阐述一下ThreadLocal类的作用?




答案1:
方式一:
直接继承Thread类并重写其public void run()方法
class 线程类名 extends Thread{
@Override
public void run() {
super.run();
}
}
方式二:
创建类实现Runnable接口
class 线程类名 implements Runnable{
@Override
public void run() {
//线程执行体
}
}
new Thread(Runnable对象,线程名字).start()


方式三:
线程功能最为强大,就是使用复杂一点
1.实现Callable接口
class 线程执行体<返回值类型> implements Callable<返回值类型>{
@Override
public 返回值类型 call() throws Exception {
return null;
}
}
2.使用Future封装
new FutureTask<返回值类型>(Callable对象)


答案2:
直接使用Thread的静态方法-->Thread.currentThread()


答案3:
建立线程--启动线程进入就绪状态(Runnable)--线程进入运行状态(Running)--线程运行结束死亡状态(Dead)--线程进入阻塞状态(Block)


答案4:
1. 运行线程会因为这些原因进入阻塞状态:调用sleep()方法,遇到使用的资源被占用,调用了一个阻塞方法(通常是阻塞式IO方法),调用了suspend()方法,等待某个通知notify()
2. 运行线程会因为这些原因进入就绪状态:调用yield()方法
3. 线程插队:运行线程创建了一个线程x,并使用了线程x.join()方法,运行线程需要等线程x运行完后才能继续执行.


答案5:
直接使用线程.setDaemon(true)方法将前台线程变为后台线程(必须在启动之前设定),当所有的前台线程死亡,后台线程会自动死亡;前台线程创建的线程默认为前台线程,后台线程创建的线程默认为后台线程


答案6:
直接使用线程.setPriority(Thread.NORM_PRIORITY|MIN_PRIORITY|MAX_PRIORITY)方法(必须在启动之前设定)


答案7:
方式一:
在线程中使用同步代码块锁定对象资源,确定代码块执行完成后或调用了资源对象的wait()方法才会释放对象资源:
synchronized (对象资源) {
线程执行代码
}
方式二:
在对象资源中定义同步方法,当某个线程使用到该对象资源的方法时就会锁定对象资源,直到方法使用完成后或调用了资源对象的wait()方法才会释放对象资源:
synchronized + 方法名(){
方法代码
}
方式三:
Lock lock = new ReentrantLock();
lock.lock();
try {
{
锁定资源对象的代码区域
}
}
finally{
lock.unlock();
}
协调方式,同wait()
Condition condition = lock.newCondition();
condition.await();
condition.signal();
condition.signalAll();


答案8:
都是阻塞式的:PipedInputStream和PipedOutputStream同下
PipedWriter pw = new PipedWriter();
PipedReader pr = new PipedReader();
pw.connect(pr);


答案9:
补充线程可以直接加到后台线程中成为后台线程,在后台线程组的所有线程结束后,线程组会自动销毁
创建线程组(new ThreadGroup())-->在创建线程的时候指定线程组(new Thread(线程组,Runnable对象,线程名字))


答案10:
线程异常处理的优先顺序,异常处理后线程结束;
如果线程本身使用了setUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler),优先使用自身设定的异常处理方式-->Thread.setDefaultUncaughtExceptionHandler(java.lang.Thread.UncaughtExceptionHandler)-->线程组的异常处理方式uncaughtException(t, e)-->抛出异常线程结束


答案11:
线程池会根据系统需要创建线程数量;
ExecutorService executorServiceCache = Executors.newCachedThreadPool();
创建固定线程数量的线程池
ExecutorService executorServiceFixed = Executors.newFixedThreadPool(5);
线程池可以在指定时间后执行线程
ScheduledExecutorService executorServiceScheduled = Executors.newScheduledThreadPool(5);
线程池使用完后要记得shutdown()


答案12:
当有多个线程访问同一个对象资源,线程可以给包含ThreadLocal的资源对象起一个别名
基于数据驱动的 Koopman 算子的递归神经网络模型线性化,用于纳米定位系统的预测控制研究(Matlab代码实现)内容概要:本文围绕“基于数据驱动的Koopman算子的递归神经网络模型线性化”展开,旨在研究纳米定位系统的预测控制问题,并提供完整的Matlab代码实现。文章结合数据驱动方法与Koopman算子理论,利用递归神经网络(RNN)对非线性系统进行建模与线性化处理,从而提升纳米级定位系统的精度与动态响应性能。该方法通过提取系统隐含动态特征,构建近似线性模型,便于后续模型预测控制(MPC)的设计与优化,适用于高精度自动化控制场景。文中还展示了相关实验验证与仿真结果,证明了该方法的有效性和先进性。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事精密控制、智能制造、自动化或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于纳米级精密定位系统(如原子力显微镜、半导体制造设备)中的高性能控制设计;②为非线性系统建模与线性化提供一种结合深度学习与现代控制理论的新思路;③帮助读者掌握Koopman算子、RNN建模与模型预测控制的综合应用。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现流程,重点关注数据预处理、RNN结构设计、Koopman观测矩阵构建及MPC控制器集成等关键环节,并可通过更换实际系统数据进行迁移验证,深化对方法泛化能力的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值