线程的生命周期
【摘要】 用户线程和守护线程(1)用户线程:也叫工作线程,当线程的任务执行完或通知方式结束(2)守护线程:一般是为工作线程服务的,当所有的用户线程结束,守护线程自动结束(3)常见的守护线程:垃圾回收机制线程的生命周期JDK中用Thread.State枚举表示了线程的几种状态Thread.State (Java Platform SE 6)public static enum Thread.Statee...
用户线程和守护线程
(1)用户线程:也叫工作线程,当线程的任务执行完或通知方式结束
(2)守护线程:一般是为工作线程服务的,当所有的用户线程结束,守护线程自动结束
(3)常见的守护线程:垃圾回收机制
线程的生命周期
JDK中用Thread.State枚举表示了线程的几种状态
Thread.State (Java Platform SE 6)
-
public static enum Thread.State extends Enum<Thread.State>
线程状态。线程可以处于下列状态之一:
NEW
至今尚未启动的线程处于这种状态。RUNNABLE
正在 Java 虚拟机中执行的线程处于这种状态。BLOCKED
受阻塞并等待某个监视器锁的线程处于这种状态。WAITING
无限期地等待另一个线程来执行某一特定操作的线程处于这种状态。TIMED_WAITING
等待另一个线程来执行取决于指定等待时间的操作的线程处于这种状态。TERMINATED
已退出的线程处于这种状态。
在给定时间点上,一个线程只能处于一种状态。这些状态是虚拟机状态,它们并没有反映所有操作系统线程状态。
写程序查看线程状态
public class ThreadState_ {
public static void main(String[] args) throws InterruptedException {
T t = new T();
System.out.println(t.getName() + " 状态 " + t.getState());
t.start();
while (Thread.State.TERMINATED != t.getState()) {
System.out.println(t.getName() + " 状态 " + t.getState());
Thread.sleep(500);
}
System.out.println(t.getName() + " 状态 " + t.getState());
}
}
class T extends Thread {
@Override
public void run() {
while (true) {
for (int i = 0; i < 10; i++) {
System.out.println("hi " + i);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
break;
}
}
}
Synchronized
线程同步机制
(1)在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据
在任何同一时刻,最多有一个线程访问,以保证数据的完整性。
(2)也可以这样理解:线程同步,即当有一个线程在对内存进行操作时,其它线程都不可以对这个内
存地址进行操作,直到该线程完成操作,其它线程才能对该内存地址进行操作。
同步具体方法
public synchronized void m(String name) {
//需要被同步的代码;
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)