java多线程学习-1

问1:同一个线程对象可以被多次调用start方法吗?

》不可以。因为每一个线程有一个volidate修饰的线程状态【threadStatus】。在每次调用start方法时,都会检查线程状态,如果不为0,则抛出

【IllegalThreadStateException();】

问2:主线程和子线程之间的关系时怎样的?

》主线程创建子线程对象,主线程和子线程各自执行,互相不影响。同时,子线程之间也不会互相干扰。

问3:如果直接调用线程的run()方法,会是怎样的?

》程序不会报错,但是是由主线程执行。【start()方法是帮助启动线程和执行run()方法】

匿名内部类如何使用的?

》new 父类(){子类内容}

线程中常用的方法:

/**
* 测试Thread类中的常用方法
* 1、start()启动当前线程,调用当前线程中的run方法
* 2、run()通常需要重写,将线程需要执行的任务写到run()中
* 3、SetName(),GetName()
* 4、currentThread()
* 5、yield()线程让步,让出线程的执行权
* 6、join()在线程a中调用线程b的join(),此时线程a就会立刻进入到阻塞状态,知道线程b完全执行完后,线程a才会结束阻塞状态
* 7、sleep(int)
* 8、stop()强制终止线程,已经过时
* 9、isAlive()判断当前线程是否存活
*/

线程中的setpriority()方法,可以设置线程的优先级。

》疑问?如何通过方法进行线程优先级的设置?是否和操作系统中的进程抢占调度算法类似?

线程中为什么setpriority()设置完优先级之后,线程之间还是会有交叉调度的?

》线程优先级高的并不会一直抢占cpu资源,也会有轮询机制。所以不管如何设置优先级,不会使其中的某个线程彻底处于阻塞状态,直到优先级高的线程先执行完





posted @ 2020-08-25 19:34  Java民工陆小凤  阅读(132)  评论(0编辑  收藏  举报