`
robinrain
  • 浏览: 60718 次
  • 性别: Icon_minigender_1
  • 来自: 威海
社区版块
存档分类
最新评论

java 线程实列

 
阅读更多

 

import java.io.*;
import java.lang.Thread;
class MyThread extends Thread{
  public int x = 0;
  public void run(){
    System.out.println(++x);
  }
}
class R implements Runnable{
  private int x = 0;
  public void run(){
    System.out.println(++x);
  }
}
public class Test {
  public static void main(String[] args) throws Exception{
    
    for(int i=0;i<10;i++){
      Thread t = new MyThread();
      t.start();
    }
    Thread.sleep(10000);//让上面的线程运行完成
    R r = new R();
    for(int i=0;i<10;i++){
      Thread t = new Thread(r);
      t.start();
    }
  }
}
 

上面10个线程对象产生的10个线程运行时打印了10次1。下面10个线程对象产生的10个线程运行时打印了1到10。我们把下面的10个线程称为同一实例(Runnable实例)的多个线程 。

1) start() 和 run()
调用线程对象的run方法不会产生一个新的线程

2) interrupt() 和 interrupted() 和 isInterrupted()
interrupt() 设置线程的中断状态,而非实质的中断线程。
interrupted() 用来判断当前线是否被中断,而
isInterrupted() 可以用来判断其他线程是否被中断,方法则仅仅检查线程对象对应的线程是否是中断状态,并不改变它的状态。

3) sleep() 和 join() 和 yield()
sleep()是类方法,也就是对当前线程而言的,程序员不能指定某个线程去sleep,只能是当前线程执行到sleep()方法时,睡眠指定的时间(让其它线程运行). 注释:在同步方法中尽量不要调用线程的sleep()方法
join()等待调用线程的返回结果。是测试其它工作状态的唯一正确方法。
yield()是类方法,只在当前线程上调用,理由同上,它主是让当前线程放弃本次分配到的时间

4) wait() 和 notify()/notifyAll()
wait() 将调用该方法的线程在休息室中等待。
notify()/notifyAll() 这两个方法都是把某个对象上休息区内的线程唤醒,notify只能唤醒一个,但究竟是哪一个不能确定,而notifyAll则唤醒这个对象上的休息室中所有的线程.

5) isAlive()
当线程处于运行状态时,isAlive返回true,当isAlive返回false时,可能线程处于等待状态,也可能处于停止状态。

synchornized关键字
在JAVA中,用synchornized关键字来实现互斥控制
把一个单元声明为synchornized,就可以让在同一时间只有一个线程操作该方法.

 

分享到:
评论

相关推荐

    Java实列入门实列

    Java实列入门实列是初学者踏入Java编程世界的重要步骤,这个资料集合提供了一系列的示例,帮助新手理解并掌握Java的基本概念和语法。在这个过程中,我们将会探索以下几个关键知识点: 1. **Java环境配置**:在开始...

    java jdk实列宝典 光盘源代码

    处理鼠标和键盘,用户在applet上按下键盘时,该实列能把按下的建显示出来,点击鼠标时能把鼠标事件和鼠标坐标显示出来,MouseAndKeyapplet.java; 英文打字小游戏,TypingGame.java; applet间通信; 汉诺塔游戏, 16 j2se...

    Java实列教程

    Java实列教程是针对初学者和有一定基础的学习者设计的一份综合学习资源,旨在帮助他们深入理解并掌握Java编程语言的核心概念和实际应用。在这个教程中,你将探索Java的各种特性,从基本语法到高级主题,包括类、对象...

    多线程应用实例

    1. **创建线程**:在Java中,可以通过实现Runnable接口或继承Thread类来创建线程。Python中,可以使用`threading`模块创建线程对象。 2. **线程的启动**:调用Thread对象的start()方法启动线程,执行run()方法中的...

    140个Java源码实例

    6. **多线程**:Java提供了并发编程的支持,通过实例,你可以学习到如何创建并管理线程,理解同步与互斥的概念,以及线程池的使用。 7. **设计模式**:可能包含一些常见的设计模式,如工厂模式、单例模式、观察者...

    java 高级程序实列

    在Java编程语言的世界里,"Java 高级程序实列"涵盖了广泛的专题,这些主题旨在帮助开发者提升他们的技能,理解并应用复杂的Java特性。这里,我们将深入探讨几个关键的Java高级概念,通过具体的实例来加深理解。 1. ...

    java cs架构系统参考

    学习Java CS架构前,应掌握Java语法、类与对象、异常处理、多线程、I/O流、网络编程等基础知识。 2. **网络通信**:CS架构中的通信通常基于TCP/IP协议,Java提供了Socket编程接口,用于创建客户端和服务端的连接。...

    java面试题,java框架面试题

    Java 面试题是 Java 开发人员面试的必备知识,涵盖了 Java 基础知识、Java 框架、Java 集合框架、Java 多线程、Java 网络编程等方面的知识点。在本文中,我们将对 Java 面试题进行总结和分析,帮助读者快速掌握 Java...

    三大项目android实战项目源码 51cto

    5. **多线程处理**:为了确保用户界面的流畅性,网络请求和数据库操作通常在后台线程中执行,可能使用了AsyncTask、IntentService或Java并发库。 6. **JSON解析**:在与服务器交互时,数据通常以JSON格式传输,...

    Spring Boot如何优雅的使用多线程实例详解

    在Spring Boot应用中,优雅地使用多线程可以显著提高应用程序的并发性能,尤其是在处理大量并发请求时。这里我们将深入探讨如何使用Spring Boot的异步处理功能,即通过`@Async`注解来实现多线程。首先,我们需要在...

    基于Java的网络舆情分析系统.zip

    7. **多线程编程**:提高爬虫的并发能力,利用ExecutorService管理多个线程,提升数据抓取效率。 8. **数据可视化**:可能涉及使用JFreeChart或ECharts等库,将舆情分析结果以图表形式展示,便于理解和解读。 9. *...

    maven spring 任务调度实列

    -- 配置线程池的核心线程数、最大线程数、线程存活时间等 --&gt; &lt;!-- 配置定时任务的线程池 --&gt; ``` 或者 ```java @Configuration @EnableScheduling public class AppConfig { @Bean public ...

    Java设计模式之单例模式讲解

    入名所示,该文件为最详细的Java单例模式讲解并附有讲解代码。主要讲了单例模式的几种方法,懒汉模式、饿汉模式、静态内部类模式。着重讲解了懒汉模式下怎么实现线程安全。饿汉模式和静态内部类模式如何设置能够避免...

    spring event示例

    ```java public class UserRegisteredEvent extends ApplicationEvent { private User user; // 构造器、getters和setters... } ``` 2. **事件发布** 要发布一个事件,你需要获取到`ApplicationContext`的...

    14-天气预报2-网络读取JSON接口并展示天气情况.rar

    例如,JSON数据中可能包含城市名、温度、湿度等天气信息,开发者需要解析出这些信息并存储在对应的Java类实例中。 接着,我们谈论的是**多线程**。由于网络操作通常耗时较长,直接在主线程执行会阻塞UI,因此通常在...

    J2ME多种示例源码与程序

    - **CLDC API**:理解基础的Java环境,如内存管理和线程操作。 - **用户界面设计**:学习如何使用MIDP组件创建用户友好的界面。 - **图形和动画**:掌握如何绘制图形和创建简单的动画效果。 - **网络编程**:了解...

    mina框架实例

    这种模型能够有效地利用系统资源,因为它不需要为每个连接分配单独的线程,而是依赖于少量的线程来处理多个连接。 2. **Filter Chain**:MINA中的过滤器链允许开发者插入中间件来处理数据流,这些过滤器可以进行...

    c#程序例子vs2008

    8. **多线程**:了解如何创建和管理多个并发执行的线程。 9. **文件操作**:学习读写文件、目录操作等基本文件系统交互。 10. **网络编程**:如何进行TCP/IP通信、HTTP请求等网络操作。 11. **XML处理**:解析和...

    dubbo示例代码dubbo-sample

    Dubbo 是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,它主要提供了RPC(远程过程调用)服务,并且包含了服务注册与发现、负载均衡、容错处理、监控等全面的服务治理功能。本示例代码 "dubbo-sample" 提供...

    Android定时器实现定时执行、重复执行、定时重复执行、定次数执行的多种方式

    `java.util.Timer` 和 `java.util.TimerTask` 是Java提供的定时任务框架,适合实现定时和周期性的任务。`Timer`负责调度任务,`TimerTask`则表示具体的任务。`Timer`的`schedule()`方法可以设置首次执行的时间,`...

Global site tag (gtag.js) - Google Analytics