`
charmo
  • 浏览: 48846 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类

Java之以内部类的方式创建线程

阅读更多
创建线程的第三种方法是以匿名内部类的方式创建,即可以在一个方法中创建线程,当
方法被调用时,线程即启动,这在编写一些简单线程应用时十分方便,如swing事件中处理
一个可能时间较长的任务,使用这种方法就不致与阻塞用户界面的操作。
/**
* 测试匿名线程线程创建
* @author www.NetJava.cn
*/
public class ThreadTest {
     //程序主方法
      public static void main(String args[]){
            ThreadTest tt=new ThreadTest();
            for(int i=0;i<10;i++){
                  tt.strartMyThread(i);
             }
      }

      /**
       * 这个方法会启动一个匿名线程线程
       */
      public void strartMyThread(int threadID){
            //要传入匿名线程内使用的参数必须定义为final型
            final int id=threadID;
            java.lang.Runnable runner=new Runnable(){
                  public void run(){
                         int i=10;
                        boolean flag=true;
                        while(flag){
                                try{
                            Thread.sleep(3000);
                            //在匿名线程类调用类中的其它方法
                            otherMethod(id);
                               if(i>13){

flag=false;
                             }
                             }catch(Exception ef){}
                       }
                  }
            };
            //最后,启动这个内部线程
            Thread t=new Thread(runner);
            t.start();
      }
      //测试方法
      private void otherMethod(int i){
            System.out.println("可以直接调用类中的其它方法: "+i);
      }

}

在程序中使用匿名内部类创建线程十分方便:在一个方法调用中就可以启动一个线程,而
且这个线程还可以直接调用类中的属性和方法;特别注意的是,在方法中启动匿名内部线程
时,如要向这个线程的 run 方法内传递参数,在创建方法中这个参数必须定义为 final 类型,
如上代码中的

//要传入匿名线程内使用的参数必须定义为final型
            final int id=threadID;
分享到:
评论

相关推荐

    java 查看JVM中所有的线程的活动状况

    java 查看JVM中所有的线程的活动状况 java 查看JVM中所有的线程的活动状况

    java线程池ThreadPoolExecutor类使用详解.docx

    在《阿里巴巴java开发手册》中指出了线程资源必须通过线程池提供,不允许在应用中自行显示的创建线程,这样一方面是线程的创建更加规范,可以合理控制开辟线程的数量;另一方面线程的细节管理交给线程池处理,优化了...

    java学习多线程处理

    线程的使用步骤:定义一个线程,创建线程的实例,启动线程,终止线程 主线程:(java中所有的线程都是java.lang.Thread类或者其子类的一个实例) 为什么要定义线程类 系统中进程包含多个线程,CPU通过分配时间片的...

    Java线程详解.ppt

    一个进程中可以包含一个或多个线程,一个线程就是程序内部的一条执行线索。 在单线程中,程序代码按调用顺序依次往下执行,不能实现两段程序代码同时交替运行的效果。如果一个程序中要实现两段程序代码同时交替运行...

    使用Java匿名内部类实现一个简单的线程池.txt

    这段代码实现了一个简单的线程池ExecutorService,其中使用了Java的匿名内部类。...这个简单的示例代码展示了如何使用Java匿名内部类来实现一个线程池的简单功能,方便了对多线程任务的管理和执行。

    Java开发技术大全(500个源代码).

    mulThread.java 创建多个线程对象的类 demoJoin.java 演示使用join()以确保主线程最后结束 clicker.java 一个计数用的线程类 demoPri.java 调用上面这个类设置线程优先级示例 myThread.java 自己定义的一个...

    08.第八节-使用lambda表达式创建线程.mp4

    即使是升级到JDK1.8了,但是很多开发者依然是停留在1.8之前的开发方式,使用的也是非常老旧和过时的API,遇到函数式接口也是依然使用匿名内部类解决。 本系列课程从Lambda表达式、方法的引用、Stream API三处着手...

    Java内部类:你真得了解方法内部类吗?

    java内部类,相信很多人都使用过内部类,新建线程使用的匿名内部类,但是有很多人对内部类的一些概念处于模糊阶段,比如为什么方法内部类引用方法参数,方法参数必须设置为final,所以本文系统得整理了一下内部类...

    JAVA_API1.6文档(中文)

    java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text 包中类的服务提供者类。 java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间...

    java培训机构内部预习文档

    常用类 内部类、Object、包装类、String chp11.集合框架 Collection、List、Set、Map的接口及其实现类、迭代、Hash 算法与 hashCode 方法、comparable、泛型 chp12.异常 概念、分类、产生、传递、处理、自定义异常 ...

    高级java开发并发问题

    系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建线程没有统一标准,比如创建的线程有没有名字等。当系统运行起来,所有线程都在抢占资源,毫无规则,混乱场面可想而知,不好管控。 频繁手动创建线程...

    JAVA核心知识点整理.zip

    java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括...5.4JAVA 内部类 5.5JAVA 泛型 5.6JAVA 序列化(创建可复用的 Java 对象) 5.7JAVA 复制 6. Spring 原理

    Java多线程详解

    文章目录1、进程与线程2、创建多线程2.1、继承Thread类2.2、实现Runnable接口2.3、使用匿名内部类实现2.4、实现Runnable接口的好处2.5、使用Callable和Future创建线程3、线程的生命周期4、几种特殊线程4.1、join线程...

    Java 1.6 API 中文 New

    java.text 提供以与自然语言无关的方式来处理文本、日期、数字和消息的类和接口。 java.text.spi java.text 包中类的服务提供者类。 java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间...

    java源码包---java 源码 大量 实例

    在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...

    Java2实用教程.rar

    9 2Thread类的子类创建线程 9 3使用Runnable接口 9 4线程的常用方法 9 5GUI线程 9 6线程同步 9 7在同步方法中使用wait notif 和nodf3 All 方法 9 8挂起 恢复和终止线程 9 9计时器线程Timer 9 10线程联合 9 11守护...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    1.4.1 类(Class):Java世界中一类物体 14 1.4.2 方法(Method):物体的功能 15 1.4.3 main()方法:所有Java程序执行的起点 15 .1.5 名词解释 16 1.5.1 JDK和Java平台 16 1.5.2 Java编译器(Java Compiler)...

    java面试题大全-基础方面

    Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 ...

    java初学者必看

    11.1.5 Runnable创建线程步骤 11.2 线程周期 11.2.1 线程周期概念 11.2.2 线程的创建和启动 11.2.3 线程状态转换 11.2.4 等待线程结束 11.3 线程调度 11.4 线程同步 11.4.1 同步概念 11.4.2 同步格式 ...

Global site tag (gtag.js) - Google Analytics