`
javacto
  • 浏览: 86040 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Thread(上) 【015】

阅读更多
//、、、、、创建线程的方法一、、、、、、、、、、、、、、、、、、、\\

package com.testthread;

public class TestThread2 {
	public static void main(String args[]) {
		Runner2 r = new Runner2() ;
		r.start() ;
		for(int i=0; i<100; i++) {
			System.out.println("Main thread:-----" + i) ;
		}
    }
}
class Runner2 extends Thread { //通过继承Thread 类创建线程
	public void run() {
		for(int i=0; i<30; i++)  {
			System.out.println("Runner2:--" + i) ;
		}
	}
}


//、、、、、创建线程的方法二、、、、、、、、、、、、、、、、、、、\\
package com.testthread; //默认导入java.lang包
public class TestThread1 {  
	public static void main(String args[]) {
		Runner1 r = new Runner1() ; 
		Thread th = new Thread(r) ;
		th.start(); //线程启动
		r.run();  //这个是方法调用,不能使新线程启动
		
		for(int i=0; i<100; i++) {
			System.out.println("Main thread:-----" +i) ;
		}
	}
}
class Runner1 implements Runnable {  // 通过实现runnable接口创建和启动线程,尽量使用该方法而少用(不用)继承Thread方法
	public void run() {
		for(int i=0; i<30; i++) {
			System.out.println("Runner1------"+i) ;
		}
	}
}

//。。。。。TestInterrupted。。。。。。。。。。。。。。。。。。\\
package com.testthread;
import java.util.* ;
public class TestInterrupted {
	public static void main(String args[]) {
		Thread th = new Thread(new MyThread()) ;
		th.start();
		try {
			Thread.sleep(10000) ;  //该sleep 是让Main 线程休眠10秒,让th 线程工作
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		th.interrupt();  //中断线程,MyThread 里的catch
	}
}
class MyThread implements Runnable {
	public void run() {
		while(true) {
			System.out.println("===" + new Date() +"===") ; //输出系统时间,输出十次,因为main休眠10秒
			try {
				Thread.sleep(1000); // sleep 是static 属性,可以直接调用。让该线程休眠1秒
			} catch (InterruptedException e) {
				return; // 当休眠被打断时停止
			}
		}
	}
}


//。。。。。TestJoin。。。。。。。。。。。。。。。。。。\\
package com.testthread;

public class TestJoin {
	public static void main(String[] args) {
		MyThread1 m = new MyThread1("New") ;
		m.start();
		try {
			m.join(); //等待m线程终止才继续往下进行,和调用run方法结果一样
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		for(int i=1; i<=10; i++) {
			System.out.println("This is main thread.") ;
		}
	}
}
class MyThread1 extends Thread {
	MyThread1(String s) {
		super(s) ; //调用Thread中的构造方法
	}
	
	public void run() {
		for(int i=1; i<=10; i++) {
			System.out.println("This is" + getName()); //返回该线程的名称
			try {
				sleep(1000) ;
			} catch (InterruptedException e) {
				return ;
			}
		}
	}
}



//。。。。。TestPriority。。。。。。。。。。。。。。。。。。\\
package com.testthread;

public class TestPriority {
	public static void main(String args[]) {
	Thread t1 = new Thread(new MyThread3()) ;
	Thread t2 = new Thread(new MyThread4()) ;
    t1.setPriority(Thread.NORM_PRIORITY + 3) ; //Thread.NORM_PRIORITY---分配给线程的默认优先级 
    t1.start() ;
    t2.start() ;
	}
}

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

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


//。。。。。TestStop。。。。。。。。。。。。。。。。。。\\

package com.testthread;

public class TestStop {
	public static void main(String args[]) {
		ThreadRun tr = new ThreadRun() ;
		Thread r = new Thread(tr);
		r.start();
		for (int i = 0; i < 1000000; i++) {
			if (i % 1000 == 0) {
				System.out.println("in thread main i=" + i);
			}
		}
		System.out.println("Thread main is over");
		 tr.shutDown() ;
		r.stop();
	}
}

class ThreadRun implements Runnable {
	private boolean flag = true;

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



//。。。。。TestYield。。。。。。。。。。。。。。。。。。\\

package com.testthread;
public class TestYield {
	public static void main(String args[]) {
		MyThread2 th1 = new MyThread2("th1") ;
		MyThread2 th2 = new MyThread2("th2") ;
		th1.start();
		th2.start();
	}
}

class MyThread2 extends Thread {
	 public MyThread2(String s) {
		super(s) ;
	}
	 
	 public void run() {
		 for(int i=1; i<=100; i++) {
			 System.out.println(getName()+ ": "+i) ;
			 if(i%10 == 0) {
				 yield() ; //当i值是10的倍数时候,暂停当前正在执行的线程对象,并执行其他线程
			 }
		 }
	 }
}




分享到:
评论

相关推荐

    thread thread thread thread

    thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread thread ...

    RTThread Stm32 标准库参考工程.zip_RT-Thread STD库_rtos stm32_rtthread_rt

    这个压缩包提供了使用RT-Thread在STM32芯片上开发应用的详细示例,帮助开发者理解和应用RT-Thread的STD库。 STM32是意法半导体(STMicroelectronics)推出的基于ARM Cortex-M系列内核的微控制器,以其高性能、低...

    threadx 在arm9 上的移植指导

    ### ThreadX在ARM9上的移植指导 #### 一、ThreadX简介与工作原理 ThreadX是一款由Express Logic公司开发的实时操作系统(RTOS),以其高效、可靠及轻量级等特点著称,广泛应用于嵌入式系统领域。ThreadX采用抢占式...

    rt-thread-3.1.3_rtthread_RT-Thread_nano_rtthreadopenocd_RT-Threa

    "rt-thread-3.1.3" 是该操作系统的特定版本,代表着该版本在功能和性能上的优化与改进。 RT-Thread Nano是RT-Thread的一个精简版,它专注于提供基础的实时内核服务,如线程管理、内存管理和信号量机制。在"rtthread...

    ThreadX中文学习手册

    - **ANSI C源代码**:ThreadX的核心采用ANSI C编写,仅在生成特定处理器的内核时才需要少量的汇编语言支持,这样的设计大大简化了将ThreadX移植到新处理器上的工作。 #### 二、ThreadX的优点 - **改进的响应特性**...

    RT-Thread常见函数.zip_RTT_rt thread_rt-thread函数_rt_thread函数_手册

    5. **中断处理**:RTT支持中断服务,`rt_interrupt_enter`和`rt_interrupt_leave`用于中断上下文的切换,`rt_hw_interrupt_handle`处理中断事件。 6. **设备驱动**:RTT提供了统一的设备驱动接口,如I/O操作,`rt_...

    rt-thread入门教程PPT

    RT-Thread 作为一款中间件平台,具有极强的扩展性,支持市面所有的主流编译工具,完成了在超过 50 款 MCU 芯片上和所有主流 CPU 架构上的移植工作。 RT-Thread 的主要特点是: * 开源、免费的方式进行发布,许可证...

    ThreadX5.1 Win32 Demo

    这个"ThreadX5.1 Win32 Demo"是2009年的最新版本,它提供了在Win32平台上运行ThreadX操作系统的演示环境。了解ThreadX对于深入学习嵌入式系统设计和开发至关重要,因为它是一个高效、可定制且广泛使用的RTOS。 ...

    5,RT Thread操作系统教程及资料_rtthread_RT-Thread_

    RT Thread是一款轻量级、高性能、组件丰富的实时操作系统(RTOS),尤其适合于嵌入式系统。这个压缩包中包含的“5,RT Thread操作系统教程及资料(第三方合作伙伴)”很可能是由RT Thread社区或者合作伙伴提供的学习...

    实时操作系统ThreadX剖析

    例如,Lamie EL的文献《嵌入式实时操作系统的多线程计算:基于THREADX和ARM》详细讨论了ThreadX在ARM架构上的多线程计算方法。而Saksena M和Wang Y的研究则关注于使用抢占阈值进行可扩展的多任务处理和实时调度设计。...

    threadx中文资料

    3. **ANSI C源代码**:ThreadX主要采用ANSI C编写,这意味着它可以轻松移植到不同的处理器上,并且用户可以获得完整的源代码,增强了透明度和灵活性。 4. **非黑盒结构**:除了部分特定于处理器的部分需要使用汇编...

    rt-thread-master.zip_ARM thread_RT-Thread_RT_Thread_arm open sou

    6. `apps`:示例应用程序和测试用例,帮助开发者了解如何在RT-Thread上编写程序。 7. `docs`:文档和教程,提供关于RT-Thread的详细信息和使用指南。 在实际开发中,开发者通常会使用RT-Thread Studio这样的集成...

    在STM32MP157A上移植ThreadX

    8. **中断服务例程(ISR)**:STM32MP157A的中断处理需要与ThreadX内核协同工作,正确配置中断优先级,并在ISR中使用ThreadX提供的API进行上下文切换。 9. **调试与优化**:在STM32CubeIDE中利用调试工具,检查任务...

    rtthread的at组件在freeRTOS上的移植修改代码

    《RTThread AT组件在FreeRTOS上的移植与修改详解》 在嵌入式系统开发中,RTThread是一款广泛应用的实时操作系统,而FreeRTOS则是另一款轻量级、高效的实时操作系统。两者都有各自的优点,而在实际项目中,有时我们...

    C#多线程之Thread中Thread.IsAlive属性用法分析

    `Thread`类是.NET框架提供的用于创建和管理线程的核心类。其中,`Thread.IsAlive`属性是一个非常重要的成员,它允许开发者检查线程的当前状态,以确定线程是否已经启动并且仍在运行。在理解`Thread.IsAlive`属性的...

    RT-Thread中文文档

    软件组件则是构建在RT-Thread内核之上的软件单元,它们为操作系统提供了丰富的功能,例如命令行shell(finsh/mshshell)、虚拟文件系统(包括但不限于FAT、YAFFS、UFFS、ROM/RAM文件系统)、TCP/IP网络协议栈(如...

    threadX的VC开发环境

    本资源“ThreadX的VC开发环境”是专为VS2005设计的,它包含了在Windows平台上开发ThreadX应用所需的所有工具和库。VS2005是一款强大的C++开发平台,支持多种编程语言,其调试功能和项目管理工具对于开发复杂的实时...

    2022年RT-Thread全球技术大会国内专场PPT合集(31份).zip

    RT-Thread 上的单元测试 RT-Thread 中的 POSIX 支持 RT-Thread开源社区蓝牙调试分享 RT-Thread在摄像头及IoT设备上的实践经验分享 高性能RISCV MCU在以太网以及CAN FD基于RT-Thread的应用 基于rt thread smart构建...

    RT-Thread API参考手册.pdf

    RT-Thread是一款由国内团队开发并维护的嵌入式实时操作系统,拥有完全的自主知识产权。自成立以来,RT-Thread经过长时间的发展,已经成为了一个功能强大、组件丰富的物联网操作系统,尤其适应于资源受限的微控制器...

    zynq7020+rtthread.zip

    本文将深入探讨如何在Zynq7020 FPGA芯片上移植和应用RTThread操作系统,同时介绍MAC控制器驱动与LWIP网络库的整合。 Zynq7020是Xilinx公司的一款高度集成的片上系统(SoC),集成了ARM Cortex-A9双核处理器和可编程...

Global site tag (gtag.js) - Google Analytics