1.知识重点
- 程序是静态,进程是动态。
- 一个程序对应一个进程,
- 进程中可以启动多线程,
- java首先开始运行是main线程。
- 后面我们可以自己加线程类。完成多线程。
- 官方解释
2.transient知识
如果在序列化类中想要不序列化,就用transient修饰不会序列化
3.进程实现
3.1Thread
- 如Runing类继承进程Tread类
- 重写run方法
- 则实例化类,如Runing runing=new runing();
- runing.start();线程开始跑里面的代码(一般里面是死循环)
3.2Runable
- 通过继承Runable接口使Runing2类成为目标类
- Runing2 runing2=new Runing2();
- Thread thread=new Thread(runing2);传入目标类
- thread.start();//则都线程开始了。跑runing2中的run方法。
4.线程的生命周期
- 新建状态(New)
- 可执行状态(Runnable)
- 运行状态(Running)
- 阻塞状态(Blocking)
- 死亡状态(Dead)
- 进入阻塞状态的三种情况
- 调用sleep方法
- 调用join方法
- 执行I/O操作
4.1interrupt方法调用
把握几个重点:stop变量、run方法中的sleep()、interrupt()、InterruptedException。
串接起 来就是这个意思:当我们在run方法中调用sleep(或其他阻塞线程的方法)时,如果线程阻塞的 时间过长,比如10s,那在这10s内,线程阻塞,run方法不被执行,但是如果在这10s内,stop被 设置成true,表明要终止这个线程,但是,现在线程是阻塞的,它的run方法不能执行,自然也就 不能检查stop,所以线程不能终止,
这个时候,我们就可以用interrupt()方法了:我们在 thread.stop = true;语句后调用thread.interrupt()方法, 该方法将在线程阻塞时抛出一个中断 信号,该信号将被catch语句捕获到,一旦捕获到这个信号,线程就提前终结自己的阻塞状态,
这 样,它就能够再次运行run 方法了,然后检查到stop = true,while循环就不会再被执行,在执 行了while后面的清理工作之后,run方法执行完毕,线程终止。