package com.jit.test;
import java.util.concurrent.TimeUnit;
class InnerThread1 {
private int countDown = 5;
private Inner inner;
private class Inner extends Thread {
Inner(String name) {
super(name);
start();
}
public void run() {
try {
while (true) {
System.out.println(this);
if (--countDown == 0)
return;
sleep(10);
}
} catch (InterruptedException e) {
// TODO: handle exception
System.out.println("Interrupted");
}
}
public String toString() {
return "#" + getName() + "(" + countDown + ")";
}
}
public InnerThread1(String name) {
inner = new Inner(name);
}
}
class InnerThread2 {
private int countDown = 5;
private Thread t;
public InnerThread2(String name) {
t = new Thread(name) {
public void run() {
try {
while (true) {
System.out.println(this);
if (--countDown == 0)
return;
sleep(10);
}
} catch (InterruptedException e) {
// TODO: handle exception
System.out.println("Interrupted2");
}
}
public String toString() {
return "#" + getName() + "(" + countDown + ")";
}
};
t.start();
}
}
class InnerRunnable1 {
private int countDown = 5;
private Inner inner;
private class Inner implements Runnable {
Thread t;
Inner(String name) {
t = new Thread(this, name);
t.start();
}
public void run() {
try {
while (true) {
System.out.println(this);
if (--countDown == 0)
return;
TimeUnit.MILLISECONDS.sleep(10);
}
} catch (InterruptedException e) {
System.out.println("InnerRunnable");
}
}
public String toString() {
return "#" + t.getName() + "(" + countDown + ")";
}
}
public InnerRunnable1(String name) {
inner = new Inner(name);
}
}
class InnerRunnable2 {
private int countDown = 5;
private Thread t;
public InnerRunnable2(String name) {
t = new Thread(new Runnable() {
public void run() {
try {
while (true) {
System.out.println(this);
if (--countDown == 0)
return;
TimeUnit.MILLISECONDS.sleep(10);
}
} catch (InterruptedException e) {
System.out.println("InnerRunnable2");
}
}
public String toString() {
return "#" + Thread.currentThread().getName() + "(" + countDown
+ ")";
}
}, name);
t.start();
}
}
class ThreadMethod{
private int countDown=5;
private Thread t;
private String name;
public ThreadMethod(String name){
this.name=name;
}
public void taskThread(){
if(t==null){
t=new Thread(name){
public void run(){
try{
while(true){
System.out.println(this);
if(--countDown==0)return;
sleep(10);
}
}catch(InterruptedException e){
System.out.println("ThreadMethod Interrupted");
}
}
public String toString(){
return "#"+getName()+"("+countDown+")";
}
};
t.start();
}
}
}
public class ThreadVariations {
public static void main(String[] args) {
// new InnerThread1("InnerThread1");
// new InnerThread2("InnerThread2")
//new InnerRunnable1("InnerRunnable1");
//new InnerRunnable2("InnerRunnable2");
new ThreadMethod("ThreadMethod").taskThread();
}
}
最近在看java编程思想 的并发。越学感觉越深奥。 看到一个内部类创建多线程的例子。
感觉不错。一直觉得内部类 是比较好玩的东西 记录下来
分享到:
相关推荐
自己随便写的一个类,实现远程和本地打印字符,控制打印等级功能!
java中的多线程内部类实现数据共享和Runnable实现数据共享借鉴.pdf
java中的多线程内部类实现数据共享和Runnable实现数据共享归类.pdf
多线程方式实现简单易用的套接字,使用TCP协议 阻塞方式. 最大发送数据字节数不宜超过1KB. 同时实现了客户端及服务器端功能,可接收及发送数据. 版本: v1.0.0 第一版本发布时间: 20100823 第一作者: Jef ...
这个方法有一个隐患,就是在多线程中,如果一个线程暂停Hook,恰好这个函数又被另一个线程调用,则那个线程调用的是原函数!没有被Hook。本人采用的方法是写入jmp,调用原函数的时候,把原函数前几句代码拷入内存再...
匿名内部类可以简洁的实现多线程编程。 实例 5: Runnable 接口的匿名内部类实现 在这个例子中,我们使用匿名内部类来实现Runnable接口的run()方法。然后,我们创建了一个Thread对象,并将Runnable对象传递给它。 ...
.doc 格式 详细解析多线程技术 基础篇 • 怎样创建一个线程 • 受托管的线程与 Windows线程 • 前台线程与后台线程 • 名为BeginXXX和EndXXX的方法是做什么用的 • 异步和多线程有什么关联 WinForm多线程编程...
1. 由于项目原因,没有使用MFC类库中封装好的Ftp类.使用原始sokcet, 多线程.上传数据. 下载由于各种原因没有测试,但代码内部流程已经实现. 2. 相信看过代码之后,对ftp协议内部流程,有更加深刻的认识
超线程技术的工作原理是在处理多个线程的过程中,多线程处理器内部的每个逻辑处理器均可以单独对中断做出响应,当第一个逻辑处理器跟踪一个软件线程时,第二个逻辑处理器也开始对另外一个软件线程进行跟踪和处理。...
包括一个公共类和一个内部类,能实现为多个客户提供连续的服务
Delphi线程池实现多线程FTP分段下载组件 by :renshouren mail:114032666@qq.com QQ:114032666 2019.10.05 使用的组件 1、TIdFTP Indy FTP客户端 2、TThreadsPool 线程池 工作原理及流程 调用本单元,将自动在程序...
一个线程委托库的实现源码,最大的优点是实现多线程不再困难,线程同步和管理不再头疼,同时内置了浏览器线程的实现。 线程委托的概念主要是在任意线程中委托其他线程执行代码,例如调用一个API函数,或者调用一个...
这段代码实现了一个简单的线程池ExecutorService,其中使用了Java的匿名内部类。...这个简单的示例代码展示了如何使用Java匿名内部类来实现一个线程池的简单功能,方便了对多线程任务的管理和执行。
多线程是指一个程序内部同时执行的多个流程,与单线程相比,它至少有两个方面的优点:第一,它可以更好地利用系统资源,比如CPU,若一个线程因I/O操作受阻,另一个线程仍可利用CPU来执行;第二,它更好地满足了客户...
5.讲解了Timer定时器类, 其内部实现就是使用的多线程技术。 定时器的计划任 务执行是很重要的技术点, 包括在Android开发时都会有深入的使用, 所以会为读者详细 讲解。6.讲解的单例模式虽然很简单, 但如果遇到多...
• 我的多线程WinForm程序老是抛出InvalidOperationException ,怎么解决? • Invoke,BeginInvoke干什么用的,内部是怎么实现的 • 每个线程都有消息队列吗? • 为什么Winform不允许跨线程修改UI线程控件的值 ...
项目是运行于window/xp上的一款c/s架构的应用软件,使用URL基于tcp/ip协议来编程实现文件定位下载,通过RandomAccessFile实现文件分割,开启多线程进行加速下载,匿名内部类开启新线程实时回传下载进度给另一个新...
利用delphi实现的多线程的文件查询系统,支持word内部查询。速度快。易使用。
编写线程安全的类不是难事,用同步原语保护内部状态即可。但是对象的生与死不能由对象自身拥有的互斥器来保护。如何保证即将析构对象 x 的时候,不会有另一个线程正在调用 x 的成员函数?或者说,如何保证在执行 x ...