`

Java Thread (2)

    博客分类:
  • Java
阅读更多
1、让一个线程sleep有两种方法,一个是直接调用Thread.sleep(),另一个是使用枚举类型 java.util.concurrent.TimeUnit的枚举常量。
Clock.java
<!---->package sleep;

import static java.util.concurrent.TimeUnit.SECONDS; // utility class

public class Clock extends Thread
{
    
// This field is volatile because two different threads may access it
    volatile boolean keepRunning = true;

    
public Clock()
    { 
// The constructor
        setDaemon(true); // Daemon thread: interpreter can exit while it runs
    }

    
public void run()
    { 
// The body of the thread
        while (keepRunning)
        { 
// This thread runs until asked to stop
            long now = System.currentTimeMillis(); // Get current time
            System.out.printf("%tr%n", now); // Print it out
            try
            {
                Thread.sleep(
1000);
            } 
// Wait 1000 milliseconds
            catch (InterruptedException e)
            {
                
return;
            }
// Quit on interrupt
        }
    }

    
// Ask the thread to stop running. An alternative to interrupt().
    public void pleaseStop()
    {
        keepRunning 
= false;
    }

    
// This method demonstrates how to use the Clock class
    public static void main(String[] args)
    {
        Clock c 
= new Clock(); // Create a Clock thread
        c.start(); // Start it
        try
        {
            SECONDS.sleep(
10);
        } 
// Wait 10 seconds
        catch (InterruptedException ignore)
        {
        } 
// Ignore interrupts
        
// Now stop the clock thread. We could also use c.interrupt()
        c.pleaseStop();
    }
}

2、守护进程daemon thread:
  • Java 线程有两种类型,分别是 daemon thread 和 user thread
  • daemon thread 的存在就是为了服务 user thread, 所以当JVM中所有的user thread线程都已经执行完毕时,JVM即将推出,因为此时 JVM 中剩下的 daemon 线程已经没有存在的必要了。
  • 任何线程都可以是一个user thread 或者一个 daemon线程。可以调用方法         setDaemon(boolean isDaemon)来改变线程类型。需要注意的是,调用任何线程的该方法必须在该线程被start之前(例如在构造方法中),如果在线程running的时候调用该方法则会引发异常。
  • 默认情况下,daemon thread 创建的线程是一个 daemon thread, user thread 创建的 thread是user thread。
3、
分享到:
评论

相关推荐

    JavaThread

    JavaThread

    java thread dump 分析

    2. 分析 Thread Dump,找到导致 CPU 高的线程 3. 分析线程的状态、锁信息、死锁信息等 4. 根据分析结果,定位性能瓶颈 在分析 Thread Dump 时,可以使用一些工具,例如 `jvis`、`VisualVM` 等。这些工具可以帮助...

    Java Thread用法 经典

    ### Java Thread用法详解 #### 一、Java线程基础概念与重要性 在Java编程语言中,线程是程序执行的基本单位之一,它能够帮助我们实现多任务处理,提高程序运行效率。Java中的线程主要通过`java.lang.Thread`类来...

    Java thread dump analyzer (tda)

    Java线程分析工具(TDA)是一款专为Java开发者设计的强大工具,用于解析和理解Java应用程序的线程转储(thread dump)。线程转储是Java虚拟机(JVM)在特定时刻生成的一种快照,其中包含了应用程序中所有活动线程的状态...

    Java Thread Programming

    本资料“Java Thread Programming”由Paul Hyde提供,包含了关于Java线程编程的理论知识和实践代码,旨在帮助开发者深入理解和熟练掌握Java线程。 首先,我们来了解一下Java中线程的基本概念。在Java中,可以通过两...

    java Thread

    为保证不会出现卖出同一个票数,要java多线程同步锁。 设计思路:1.创建一个站台类Station,继承Thread,重写run方法,在run方法里面执行售票操作!售票要使用同步锁:即有一个站台卖这张票时,其他站台要等这张票卖...

    Java-Thread-Affinity,将Java线程绑定到给定的内核.zip

    2. **线程池支持**:可能扩展了`java.util.concurrent.ExecutorService`接口,使得线程池中的线程也可以根据策略绑定到特定的核心。 3. **平台兼容性**:考虑到跨平台兼容性,该项目可能实现了对Linux、Windows、...

    java thread

    java 應用 thread 的小程式 計算 time 的

    java_thread_demo

    本示例"java_thread_demo"很可能是关于Java线程编程的一个实例项目,其中可能包含了创建、管理及同步线程的各种方法。 在Java中,线程可以通过两种方式创建:继承Thread类或者实现Runnable接口。继承Thread类时,你...

    Java Thread Dump Analyzing

    Java Thread Dump Analyzing

    JAVA thread

    在Java编程语言中,线程(Thread)是执行单元,它允许程序同时执行多个任务。在"JAVA thread"这个主题中,我们主要关注的是如何在Java中创建和管理线程,以及如何通过线程实现并发执行,就像"龟兔赛跑"这个小游戏所...

    Java Thread in JVM

    Java Thread在JVM中的实现与理解 Java Thread是Java编程语言中处理并发执行的基本单元,它在Java虚拟机(JVM)中有着重要的地位。本文将深入探讨Java Thread的语法特性以及其在JVM内部的编译结果,帮助开发者更好地...

    Java线程(Java.Thread)(中英版)

    "Java Threads,2ed Edition.pdf"是第二版的线程指南,虽然版本较旧,但依然包含了基础的线程知识,对于理解Java线程的基本原理和早期版本的特性非常有帮助。书中可能探讨了Java早期的线程模型,以及如何在多线程环境...

    Java Thread Programming (Sams) java线程编程(含code)

    本资源“Java Thread Programming (Sams)”提供了详细的线程编程知识,结合了理论与实际代码,旨在帮助开发者深入理解并熟练掌握Java线程。 1. **线程概念** - 线程是操作系统调度的基本单位,一个进程可以包含多...

    各种 Java Thread State 第一分析法则 - 旁观者 - 博客园

    各种 Java Thread State 第一分析法则

    java故障排查ThreadDump

    2. **理解Thread状态** - **NEW**:新创建但尚未启动的线程。 - **RUNNABLE**:线程正在执行Java代码。 - **BLOCKED**:线程在等待监视器锁。 - **WAITING**:线程在等待另一个线程执行特定操作,没有超时时间。...

Global site tag (gtag.js) - Google Analytics