thread相关知识
-
线程Thread传参数 出自http://hi.baidu.com/ydalbj/blog/item/330b8d13f6959dd5f6039ec4.html Thread threadWithParam = new Thread(new ParameterizedThreadStart(new ThreadTest().ShowMsg));//threadWithParam.Start("this is a param.");threadWithParam.Start( thread.Start();"44444");Thread thread=new Thread(new ThreadStart(new Class11().ShowMsg)); 表示在 Thread 上执行的方法的委托方法,ThreadStart不能带参数,ParameterizedThreadStart是2.0中新增的,可以带参数(object类型的)using System.Threading
-
线程(Thread)的创建1.继承Thread 重写run() MyThread mt=new MyThread(); mt.start();2.实现RUnnable 重写run() Runnable ru=new Runnanle(); Thread t=new Thread(ru); t.start();1.package demo01;public class MyThread extends Thread{ @Override public void run() { for(int i=0;i<5;i++){ System.out.println("夏明"+i); } }}package demo01;publi
-
如何在 C# 中使用 Thread线程是进程中的最小执行单元,多线程是指在给定时间内拥有多个线程的能力,并且可以调度它们从而在某一时刻处理多个操作,微软的 .Net Framework 提供了 Thread 来帮助我们完成多线程开发。 Thread 编程 要想使用 Thread,需要在程序中引用 System.Threading 命名空间,然后再提供一个供线程调度的方法,这个方法是通过 Thread 中的 ThreadStart 委托代理的,下面的代码展示了如何创建线程。 ``` C# Thread t = new Thread(new ThreadStart(MyThreadMethod)); 线程创建
-
Java多线程20 Worker Thread模式1.Worker Thread模式Worker的意思是工作的人,在Worker Thread模式中,工人线程Worker thread会逐个取回工作并进行处理,当所有工作全部完成后,工人线程会等待新的工作到来。Worker Thread模式也被成为Background Thread(背景线程)模式,另外,如果从保存多个工人线程的场所这一点看,我们也可以称这种模式为Thread Pool模式。2.Worker Thread模式中的角色1.Client(委托者)创建表示工作请求的Request并将其传递给Channel。在示例程序中,ClientThread相当于该角色。2.Channel(通信线路)Channel角色接受来自于Client的Request,并将其传递给Worker。在示例程序中,Channel相当于该角色。3.Worker(工人)Worker角色从Channel中获取Request,并进行工作,当一项工作完成后,它会继续去获取另外的Request,在示例程序中,WorkerThread相当于该
thread相关课程
thread相关教程
- 2.1 Thread 类 Thread 类是一个线程类,位于 java.lang 包下。2.1.1 构造方法Thread 类的常用构造方法如下:Thread():创建一个线程对象;Thread(String name):创建一个指定名称的线程对象;Thread(Runnable target):创建一个基于 Runnable 接口实现类的线程对象;Thread(Runnable target, String name):创建一个基于 Runnable 接口实现类,并具有指定名称的线程对象。2.1.2 常用方法void run():线程相关的代码写在该方法中,一般需要重写;void start():启动当前线程;static void sleep(long m):使当前线程休眠 m 毫秒;void join():优先执行调用 join() 方法的线程。Tips:run() 方法是一个非常重要的方法,它是用于编写线程执行体的方法,不同线程之间的一个最主要区别就是 run() 方法中的代码是不同的。可翻阅官方文档以查看更多 API。2.1.3 实例通过继承 Thread 类创建线程可分为以下 3 步:定义 Thread 类的子类,并重写该类的 run() 方法。run() 方法的方法体就代表了线程要完成的任务;创建 Thread 子类的实例,即创建线程对象;调用线程对象的 start 方法来启动该线程。具体实例如下:/** * @author colorful@TaleLin */public class ThreadDemo1 extends Thread { /** * 重写 Thread() 的方法 */ @Override public void run() { System.out.println("这里是线程体"); // 当前打印线程的名称 System.out.println(getName()); } public static void main(String[] args) { // 实例化 ThreadDemo1 对象 ThreadDemo1 threadDemo1 = new ThreadDemo1(); // 调用 start() 方法,以启动线程 threadDemo1.start(); }}运行结果:这里是线程体Thread-0小伙伴们可能会有疑问,上面这样的代码,和普通的类实例化以及方法调用有什么区别的,下面我们来看一个稍微复杂些的实例:/** * @author colorful@TaleLin */public class ThreadDemo2 { /** * 静态内部类 */ static class MyThread extends Thread { private int i = 3; MyThread(String name) { super(name); } @Override public void run() { while (i > 0) { System.out.println(getName() + " i = " + i); i--; } } } public static void main(String[] args) { // 创建两个线程对象 MyThread thread1 = new MyThread("线程1"); MyThread thread2 = new MyThread("线程2"); // 启动线程 thread1.start(); thread2.start(); }}运行结果:线程2 i = 3线程1 i = 3线程1 i = 2线程2 i = 2线程1 i = 1线程2 i = 1代码中我们是先启动了线程 1,再启动了线程 2 的,观察运行结果,线程并不是按照我们所预想的顺序执行的。这里就要划重点了,不同线程,执行顺序是随机的。如果你再执行几次代码,可以观察到每次的运行结果都可能不同:
- 4. 多线程实现之继承 Thread 类 实现步骤:步骤 1:继承 Thread 类 extends Thread;步骤 2:复写 run () 方法,run () 方法是线程具体逻辑的实现方法。实例:/** * 方式一:继承Thread类的方式创建线程 */public class ThreadExtendTest extends Thread{ //步骤 1 @Override public void run() { //步骤 2 //run方法内为具体的逻辑实现 System.out.println("create thread by thread extend"); } public static void main(String[] args) { new ThreadExtendTest(). start(); }}
- 2. Thread 类结构介绍 介绍: 位于 java.lang 包下的 Thread 类是非常重要的线程类。学习 Thread 类的使用是学习多线程并发编程的基础。它实现了 Runnable 接口,其包集成结构如下图所示。
- 9. Thread 编程测验实验 实验目的:对 Thread 的创建方式进行练习,巩固本节重点内容,并在练习的过程中,使用常用的 start 方法和 sleep 方法以及 线程的 setName 方法。实验步骤:使用 Runnable 接口创建两条线程 :t1 和 t2;请设置线程 t1 和 t2 的线程名称分别为 “ThreadOne” 和 “ThreadTwo”;线程 t1 执行完 run () 方法后,线程睡眠 5 秒;线程 t2 执行完 run () 方法后,线程睡眠 1 秒。请先自行实现,并将结果与所提供的答案进行复核。public class ThreadTest implements Runnable{ @Override public void run() { System.out.println("线程:"+Thread.currentThread()+" 正在执行..."); } public static void main(String[] args) throws InterruptedException { Thread t1 = new Thread(new ThreadTest()); t1.setName("ThreadOne"); Thread t2 = new Thread(new ThreadTest()); t2.setName("ThreadTwo"); t1. start(); t1.sleep(5000); t2. start(); t1.sleep(1000); System.out.println("线程执行结束。"); }}执行结果:线程:Thread[ThreadOne,5,main] 正在执行...线程:Thread[ThreadTwo,5,main] 正在执行...线程执行结束。Tips: 该测验主要针对线程的创建方式以及线程的执行 start 方法的测验,并附带进行了线程 setName 和线程 sleep 方法的使用。对于线程其他常用方法的使用如 wait 方法等,会在后续小节进行详细讲解。
- 7. 匿名内部类创建 Thread 首先确认,这并不是线程创建的第四种方式,先来看如何创建。实例:Thread t = new Thread(new Runnable() { @Override public void run() { System.out.println("通过匿名内部类创建Thread"); } });我们从代码中可以看出,还是进行了一个 Runnable 接口的使用,所以这并不是新的 Thread 创建方式,只不过是通过方式二实现的一个内部类创建。Tips: 在后续章节讲解 join 方法如何使用 的时候,我们会采用匿名内部类的方式进行多线程的创建。
- 2.3 继承 Thread 下面通过一个具体的例子,说明通过继承 Thread 的方式使用多线程。import timeimport threadingclass MyThread(threading.Thread): def __init__(self, begin, end): threading.Thread.__init__(self) self.begin = begin self.end = end def run(self): for i in range(self.begin, self.end): time.sleep(1) print(i)t0 = MyThread(1, 4)t1 = MyThread(101, 104)t0.start()t1.start()t0.join()t1.join()在第 4 行,定义类 MyThread,继承 threading.Thread。在第 5 行,定义了构造函数 __init__,首先调用父类 thread.Thread.__init__ 初始化 Thread 对象,然后将参数 begin 和 end 保存在 MyThread 的成员变量中。在第 10 行,定义了方法 run,当线程开始运行时,run 方法会被调用。在 run 方法中,打印在 [begin, end) 区间的整数,每打印一个整数,调用 time.sleep(1) 睡眠 1 秒钟。在第 15 行和第 16 行,通过调用 MyThread 的构造函数创建了两个线程。在第 17 行,调用 start 方法启动线程 t0,t0 开始执行 MyThread 的方法 run()。在第 18 行,调用 start 方法启动线程 t1,t1 开始执行 MyThread 的方法 run()。在第 19 行和第 20 行,调用 join 方法,等待线程 t0 和 t1 执行完毕。程序的运行结果如下:110121023103线程 t0 执行 thread_entry(1, 4),输出结果为 1、2、3,线程 t1 执行 thread_entry(101, 104),输出结果为 101、102、103。由于两者是并发执行的,所以结果交织在一起。
thread相关搜索
-
tab
table
tableau
tablelayout
table样式
taif
tail
talk
tamcat
tan
target属性
task
tbody
tcl tk
TCP IP
tcp ip协议
tcpdump
tcpip
tcpip协议
tcp连接