`
liuhello
  • 浏览: 69784 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

java中的线程

    博客分类:
  • java
阅读更多
java 代码
 
  1. /* 
  2.  * SimpleRunable.java 
  3.  *  
  4.  * Created on Sep 29, 2007, 10:02:27 AM 
  5.  *  
  6.  * To change this template, choose Tools | Templates 
  7.  * and open the template in the editor. 
  8.  */  
  9.   
  10. package com.tyq.thread;  
  11.   
  12. import java.util.logging.Level;  
  13. import java.util.logging.Logger;  
  14.   
  15. /** 
  16.  * 
  17.  * @author liuqinglai 
  18.  * 线程的几种状态: 
  19.  * 1、新建状态:用new语句创建的线程对象处于这个状态,仅仅在堆区为其分配了内存。 
  20.  * 2、就绪状态:其他线程调用其start方法后,它就进入了就绪状态,处于此状态的线程位于可运行池中等待 
  21.  * 获得cpu的使用权。 
  22.  * 3、运行状态:处于这个状态的线程占用cpu,执行代码。 
  23.  * 4、阻塞状态:阻塞状态可以分为以下三种 
  24.  * i、位于对象等待池中的阻塞状态:当线程在运行状态时,如果执行了某个对象的wait方法,java虚拟机就 
  25.  * 会把这个线程放入这个对象的等待池中。 
  26.  * ii、位于对象锁池中的阻塞状态:当线程处于运行状态,并且想获得某个对象的同步锁时,如果该对象的同 
  27.  * 步锁已经被占用,java虚拟机就会把这个对象放到对象的锁池中。 
  28.  * iii、其他阻塞状态:当前对象调用sleep或者其他线程的join方法,或者发生了I/O请求时,就进入这个状态。 
  29.  * 4、死亡状态:当线程执行完run方法时,就进入死亡状态,该线程执行完生命周期。 
  30.  * java虚拟机采用抢占式调度模型:是指优先让可运行池中优先级高的线程占用cpu,如果可运行级别都相同 
  31.  * 那么就随机选择一个线程使其占用cpu。处于运行状态的线程会一直运行,知道其不得不放弃cpu 
  32.  * 一个线程会因为以下原因放弃cpu: 
  33.  * 1、java虚拟机让当前线程放弃cpu使其他线程获得运行的机会。 
  34.  * 2、当前线程因为某些原因进入阻塞状态。 
  35.  * 3、线程运行结束。 
  36.  */  
  37. public class SimpleRunable implements Runnable{  
  38.     protected static Logger log = Logger.getLogger(SimpleRunable.class.getName());  
  39.     private int i = 0;  
  40.     public void run() {  
  41.         for(i = 0 ;i < 5;i++)  
  42.         {  
  43.             try {  
  44.                 log.info(i + "  : " + Thread.currentThread());  
  45.                 Thread.sleep(100);  
  46.             } catch (InterruptedException ex) {  
  47.                 log.log(Level.SEVERE, null, ex);  
  48.             }  
  49.         }  
  50.     }  
  51.     public static void main(String[] args)  
  52.     {  
  53.         SimpleRunable simpleRunable = new SimpleRunable();  
  54.         Thread t1 = new Thread(simpleRunable);  
  55.         Thread t2 = new Thread(simpleRunable);  
  56.         //t1.setPriority(Thread.MAX_PRIORITY);  
  57.         t1.start();  
  58.         t2.start();  
  59.     }  
  60. }                                                                                        
  61. /**
     *
     * 每个进程需要操作系统为其独立分配一块内存地址空间;
     * 而同一进程中的每个线程都共享在同一块地址空间中工作。
     * 一个线程只能启动一次,第二次启动时会抛出IllegalThreadStateException
     */  
  62. 不要随便覆盖Thread类的start方法,如下面这个被覆盖了的start方法,在执行时只是简单的方法
         * 调用:
         * @Override
         *public synchronized void start() {
         *  run();
         *}
         *
         */     
分享到:
评论

相关推荐

    java中线程的应用例子

    4. **线程状态**:Java线程有五种状态:新建、可运行、运行、阻塞和死亡。了解这些状态可以帮助开发者更好地控制和调试线程。 5. **线程优先级**:每个线程都有一个优先级,Java中从1(`MIN_PRIORITY`)到10(`MAX_...

    java多线程Demo

    Java线程有10个优先级(MIN_PRIORITY, NORM_PRIORITY, MAX_PRIORITY),默认优先级是NORM_PRIORITY。但是,线程优先级并不保证绝对的执行顺序,操作系统调度策略可能影响实际执行顺序。 7. join()方法: 一个线程...

    java中线程的有效使用

    学习这个项目,我们可以深入理解Java线程的创建、同步和协作,以及如何通过`wait()`和`notify()`实现线程间的通信。此外,通过分析和调试这些类,我们还可以掌握多线程环境中的死锁、活锁和饥饿等问题的识别和解决...

    在JAVA中线程起到的作用.pdf

    在Java编程语言中,线程扮演着至关重要的角色,特别是在多任务处理和并发执行中。线程使得程序能够同时执行多个任务,提高了系统的效率和响应性。以下是对Java中线程作用的详细解释: 首先,线程是程序执行的最小...

    Java中线程思维导图

    Java中线程思维导图

    java中线程的创建常见有如三种基本形式实例

    在Java编程语言中,线程是程序执行的最小单元,它可以与程序的其他部分并行运行。理解如何创建和管理线程是Java开发者必备的技能。本文将详细讲解Java中线程的三种基本创建形式,并通过实例进行深入解析。 ### 1. ...

    java中线程的相关知识及语法总结

    java中线程的相关知识及语法总结

    Java中一个线程执行死循环有什么后果

    在Java编程中,线程执行死循环可能会导致一系列的后果,尤其是在多线程环境中。首先,我们要理解死循环的概念:一个死循环就是程序中的某个循环条件始终为真,导致循环无法自然终止,持续消耗CPU资源。 标题所提及...

    java多线程作业.docx

    - Java中线程调度采用的是抢占式调度模式,即高优先级的线程会抢占低优先级线程的执行权。 3. **线程状态**: - 新建(New):线程对象刚刚被创建时的状态。 - 就绪(Runnable):线程对象创建后,其他线程调用...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    java多线程经典案例

    本案例将深入探讨Java多线程中的关键知识点,包括线程同步、线程通信和线程阻塞。 线程同步是为了防止多个线程同时访问共享资源,导致数据不一致。Java提供了多种同步机制,如synchronized关键字、Lock接口...

    Java多线程设计模式上传文件

    Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式上传文件Java多线程设计模式...

    JAVA单线程多线程

    ### JAVA中的单线程与多线程概念解析 #### 单线程的理解 在Java编程环境中,单线程指的是程序执行过程中只有一个线程在运行。这意味着任何时刻只能执行一个任务,上一个任务完成后才会进行下一个任务。单线程模型...

    java多线程之A线程等B、C线程都执行完在执行的结果示例

    在A线程中,我们可以创建一个CountDownLatch,初始化为2(表示B和C两个线程),然后在B和C线程的最后调用countDown()。A线程通过await()方法阻塞自己,直到计数值变为0。 ```java CountDownLatch latch = new ...

    JAVA多线程实验报告

    在本实验报告中,我们探讨了Java多线程技术在实际编程中的应用,特别是通过编写applet程序展示了如何实现滚动字符串和动态动画效果。实验主要分为两个部分:滚动字符串和蓝色反弹球。以下是对这些知识点的详细说明:...

    java 多线程操作数据库

    由于数据库连接是一种昂贵的资源,应避免在每个线程中重复创建连接,通常采用连接池的方式进行管理。 3. **数据插入操作**:代码示例展示了如何使用预编译语句(PreparedStatement)执行数据插入操作。预编译语句...

    Java 模拟线程并发

    Java 模拟线程并发是编程领域中的一个重要概念,尤其在多核处理器和高并发应用中,理解并熟练掌握线程并发技术对于提升程序性能至关重要。在Java中,线程并发可以通过多种方式实现,包括继承Thread类、实现Runnable...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

    Java多线程机制(讲述java里面与多线程有关的函数)

    Java多线程机制是Java编程中至关重要的一部分,它允许程序同时执行多个任务,提升应用程序的效率和响应性。以下是对各个知识点的详细说明: 9.1 Java中的线程: Java程序中的线程是在操作系统级别的线程基础上进行...

    java线程(文字版PDF)

    ### Java线程基础 #### 一、操作系统中的线程与进程概念 在现代操作系统中,多线程是一种常见的实现多任务的方式。对于操作系统而言: - **进程**:指的是内存中运行的一个应用程序。每个进程拥有自己独立的一块...

Global site tag (gtag.js) - Google Analytics