线程的创建有两种方式:1.继承Thread类 2.实现Runnable方法
既然是谈谈线程的二三事,那么我们就先瞧瞧这个Thread类!
一、Thread类里面的一些常用的方法,我列出来看看:
1.void start(): 启动线程,并执行对象的run()方法
2.run() 线程在被调度时执行的操作
3.String getName(): 返回线程的名称
4.void setName(String name):设置该线程名称
5.static currentThread(): 返回当前线程
6.static void yield():线程让步
暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程
若队列中没有同优先级的线程,忽略此方法
7.join() :当某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到 join() 方法加入的 join 线程执行完为止
低优先级的线程也可以获得执行
8.static void sleep(long millis):(指定时间:毫秒)
令当前活动线程在指定时间段内放弃对CPU控制,使其他线程有机会被执行,时间到后重排队。
抛出InterruptedException异常
9.stop(): 强制线程生命期结束
10.boolean isAlive():返回boolean,判断线程是否还活着
11.getPriority():返回线程优先值
12.setPriority(int newPriority):改变线程的优先级(注意:其实这个改变优先级也只能是增大其抢占cpu的概率,当然还是不一定会抢到)
我们平常都会去使用多线程,但是具体而言,多线程能给我们带来什么样的优点呢?
我来给大家总结一下:
多线程程序的优点:
1.提高应用程序的响应。对图形化界面更有意义,可增强用户体验。
2.提高计算机系统CPU的利用率
3.改善程序结构。将既长又复杂的进程分为多个线程,独立运行,利于理解和修改
最后,我来补充一下一些关于线程的知识点:
Java中的线程分为两类:一种是守护线程,一种是用户线程。
它们在几乎每个方面都是相同的,唯一的区别是判断JVM何时离开。
守护线程是用来服务用户线程的,通过在start()方法前调用thread.setDaemon(true)可以把一个用户线程变成一个守护线程。
Java垃圾回收就是一个典型的守护线程。
若JVM中都是守护线程,当前JVM将退出。