`
webcode
  • 浏览: 5943410 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

java例程练习(多线程[线程的优先级等等])

 
阅读更多
//设置线程的优先级
public class TestThread1 {
	public static void main(String[] args) {
		Thread t1 = new Thread(new T1());
		Thread t2 = new Thread(new T2());
		t1.setPriority(Thread.NORM_PRIORITY + 3);
		t1.start();
		t2.start();
	}


}

class T1 implements Runnable {
	public void run() {
		for(int i = 0; i < 1000; i++) {
			System.out.println("--------T1: " + i);
		}
	}
}

class T2 implements Runnable {
	public void run() {
		for(int i = 0; i < 1000; i++) {
			System.out.println("========T2: " + i);
		}
	}
}
//同样的线程对象可以用来起多个线程
public class TestThread2 {
    public static void main(String[] args) {
    	Runner2 r = new Runner2();
    	Thread t1 = new Thread(r);
    	Thread t2 = new Thread(r);
    	t1.start();
    	t2.start();
    }
}

class Runner2 implements Runnable {
	public void run() {
		for(int i = 0; i < 30; i++) {
			System.out.println("NO. " + i);
		}
	}
}

//sleep()方法
public class TestThread3 {
	public static void main(String[] args) {
		Runner3 r = new Runner3();
		Thread t = new Thread(r);
		t.start();
	}
}

class Runner3 implements Runnable {
	public void run() {
		for(int i = 0; i < 30; i++) {
			if(i % 10 == 0 && i != 10) {
				try {
					Thread.sleep(1000);
				} catch(InterruptedException e) {}
				System.out.println("NO. " + i);
			}
		}
	}
}

public class TestThread4 {
	public static void main(String[] args) {
		Runner4 r = new Runner4();
		Thread t = new Thread(r);
		t.start();

		for(int i = 0; i < 100000; i++) {
			if(i % 1000 == 0 & i > 0) {
				System.out.println("In Thread main i = " + i);
			}
		}
		System.out.println("Thread Main is Over");
		r.shutDown();
	}

}

class Runner4 implements Runnable {
	private boolean flag = true;//最好的使线程终止的方法

	public void run() {
		int i = 0;
		while(flag == true) {
			System.out.print(" " + i++);
		}
	}

	public void shutDown() {
		flag = false;
	}
}

//复习join()方法;
public class TestThread5 {
	public static void main(String[] args) {
		Runner5 r = new Runner5();
		Thread t = new Thread(r);
		t.start();

		try {
			t.join();
		} catch(InterruptedException e) {}

		for(int i = 0; i < 50; i ++) {
			System.out.println("MainThread: " + i);
		}

	}

}

class Runner5 implements Runnable {
	public void run() {
		for(int i = 0; i < 50; i++) {
			System.out.println("SubThread: " + i);
		}
	}
}

public class TestThread6 {
	public static void main(String[] args) {
		Thread t = new Runner6();
		t.start();

		for(int i = 0; i < 50; i++) {
			System.out.println("MainThread: " + i);
		}
	}
}

class Runner6 extends Thread {
	public void run() {
		//拿到当前线程判断是不是还活着Thread.currentThread(),isAlive()
		System.out.println(Thread.currentThread().isAlive());
		for(int i = 0; i < 50; i++) {
			System.out.println("SubThread: " + i);
		}
	}
}


分享到:
评论

相关推荐

    JAVA程序设计教程

    思考与练习.....................................................................................................................12 上机实习题..............................................................

    基于HPSOCKET的C/S软件开发框架,功能全面,例程完善···-易语言

    这个线程池最大的亮点就是支持线程优先级。啥意思?比如数据库进行增删改操作,又有cha询操作,那么增删改的优先级肯定是要高于cha询优先级的。 3、上传池和下载池: 支持多线程、4G+文件、多客户Duan同时收发,自动...

    易语言-易语言真正的线程池简易实现

    每个线程都使用默认的堆栈大小,以默认的优先级运行,并处于多线程单元中。超过最大值的线程可以排队,但他们要等到其他线程完成后才启动。 具体参见:http://baike.baidu.com/view/262150.htm 二.实现的过程概述:...

    深入浅出MFC-简体版(2)PDF

    线程优先级(Priority) 多线程程序设计实例 第2章 C++的重要性质 类及其成员——谈封装(encapsulation) 基类与派生类:谈继承(Inheritance) this指针 虚拟函数与多态(Polymorphism) 类与对象大解剖 Object ...

    深入浅出MFC【侯捷】

    正确态度 MFC多线程程序设计 探索CWinThread 产生一个Worker Thread 产生一个UI Thread 线程的结束 线程与同步控制 MFC多线程程序例程 第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 ...

    深入浅出MFC 2e

    MFC多线程程序例程 第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 剖析AppWizard Components Dialog Templates和Dialog classes Macros Directives 动手修改Top Studio AppWizard 利用...

    侯捷- -深入浅出MFC

    MFC多线程程序例程 第15章 定制一个AppWizard 到底Wizard是什么? Custom AppWizard的基本操作 剖析AppWizard Components Dialog Templates和Dialog classes Macros Directives 动手修改Top Studio AppWizard 利用...

    Delphi深度编程技术

    2.6 后台多线程数据查询实例 第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件创建实例 3.3 组件的高级技术--属性编辑器和组件...

    windows驱动开发技术详解-part2

     8.2.4 线程调度与线程优先级  8.2.5 IRQL的变化  8.2.6 IRQL与内存分页  8.2.7 控制IRQL提升与降低  8.3 自旋锁  8.3.1 原理  8.3.2 使用方法  8.4 用户模式下的同步对象  8.4.1 用户模式的等待 ...

    Windows驱动开发技术详解的光盘-part1

     8.2.4 线程调度与线程优先级  8.2.5 IRQL的变化  8.2.6 IRQL与内存分页  8.2.7 控制IRQL提升与降低  8.3 自旋锁  8.3.1 原理  8.3.2 使用方法  8.4 用户模式下的同步对象  8.4.1 用户模式的等待 ...

    FreeBSD操作系统设计与实现

    4.4.4 线程优先级例程 4.4.5 线程运行队列和上下文切换 4.4.6 ULE调度程序 4.5 创建进程 4.6 终止进程 4.7 信号 4.7.1 信号的历史 4.7.2 发送信号 4.7.3 接收信号 4.8 进程组和会话 4.8.1 会话 4.8.2 作业控制 4.9 ...

    Delphi5开发人员指南

    11.1.2 在Delphi程序中使用多线程 304 11.1.3 关于线程的滥用 305 11.2 TThread对象 305 11.2.1 TThread基础 305 11.2.2 TThread实例 307 11.2.3 线程的终止 307 11.2.4 与VCL同步 308 11.2.5 一个演示程序 310 ...

    《Delphi 深度编程及其项目应用开发》PDF书及代码

    2.5 进程的优先级别 2.5.1 进程的优先级类 2.5.2 相对优先级 2.6 后台多线程数据查询实例 第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件...

    深入解析Windows操作系统中文.part2.rar

    多处理器的线程调度算法 366 6.6 作业对象 369 6.7 本章总结 374 第7章 内存管理 375 7.1 内存管理器简介 375 内存管理器组件 376 内部同步 377 配置内存管理器 378 检查内存的使用情况 378 7.2 内存管理器提供的...

    DELPHI 5编程实例与技巧

    本书共分三部分、16章,主要介绍Delphi 5集成开发环境,对象Pascal语言、组件、通用编程技术、动态链接库、多线程、多媒体编程、数据库编程、网络编程和Windows API编程等。 目 录 前言 第一部分 Delphi编程基础 ...

    疯狂内核之——进程管理子系统

    2.5.4 中断服务例程 115 2.5.5 IRQ线的动态分配 116 2.6 下半部分 117 2.6.1 软中断 118 2.6.2 tasklet 121 2.6.3 工作队列 122 2.7定时器中断 124 2.7.1 时钟与定时器 124 2.7.2 定时器中断相关的数据结构 127 ...

    Delphi 5编程实例与技巧

    第8章 多线程应用程序 167 8.1 进程与线程 167 8.2 TThread类 167 8.3 线程的同步 169 8.4 线程的优先级 170 第9章 动态链接库 176 9.1 概述 176 9.2 创建动态链接库 177 9.3 使用动态链接库 179 9.4 方法与技巧 180...

Global site tag (gtag.js) - Google Analytics