浅析Java中线程的创建和启动
前言
线程是一个程序内部的顺序控制流。cpu实际上在一个时间点上,只执行一个。只不过我们把cup分成了多个时间片,由于速度很快,我们看起来像是多个线程。就像你的时间分成几片,这样整体看来做事情有规律,效率就会高,何况是cup呢。
线程的创建和启动:
(1)定义Thread
类的子类,并重写了该类的run()
方法,该run()
方法的方法就代表了线程需要完成的任务。因此把run()
方法称为线程执行体
(2)创建Thread
子类的实例,即创建了线程对象
(3)调用线程对象的start()
方法来启动该线程
源代码:
// 通过继承Thread类来创建线程类 public class FirstThread extends Thread { private int i; //重写run()方法,run()方法的方法体是线程执行体 public void run() { for(;i<100;i++) {//当线程类继承Thread类时,直接使用this即可获取当前数据 //Thread对象的getName()返回当前线程的名字 //因此可以直接调用getName()方法返回当前线程的名字 System.out.println(getName()+””+i); } } public static void main(String[] args) { for(int i=0;i<100;i++) { //调用Thread的currentThread()方法获取当前线程 System.out.println(Thread.currentThread().getName() +””+i); if(i==20) { //创建并启动第一个线程 new FirstThread().start(); //创建并启动第二个线程 new FirstThread().start(); } } } }
运行界面:
总结
以上就是本文的全部内容,希望对大家的学习和工作有所帮助。如果有疑问可以留言讨论。
相关推荐
-
基于.NET程序默认启动线程数讲解
问:一个.NET程序在运行时到底启动了多少个线程? 答:至少3个. 1.启动CLR并运行Main方法的主线程2.调试器帮助线程3.Finalizer线程 复制代码 代码如下: class Program { static void Main(string[] args) { Console.WriteLine("Main thread: {0}", Thread.CurrentThread.ManagedThreadId); Consol
-
Java多线程的用法详解
1.创建线程 在Java中创建线程有两种方法:使用Thread类和使用Runnable接口.在使用Runnable接口时需要建立一个Thread实例.因此,无论是通过Thread类还是Runnable接口建立线程,都必须建立Thread类或它的子类的实例.Thread构造函数: public Thread( ); public Thread(Runnable target); public Thread(String name); public Thread(Runnable target
-
asp.net在事件中启动线程来打开一个页面的实现方法
在页面点击一个按钮,其目的是在按钮中做两件事情,一件需要点击按钮马上完成,另一件事情是点击按钮后做其他事情.如果按顺序一次做完感觉特别耗时,下面简单罗列一下. protected void Button1_Click(object sender, EventArgs e) { Label1.Text = TextBox1.Text; //在这做第一件事情 dowork(); //做完后马上启动线程 System.Threading.Thread thread = new System.Threa
-
详解Java编程中线程同步以及定时启动线程的方法
使用wait()与notify()实现线程间协作 1. wait()与notify()/notifyAll() 调用sleep()和yield()的时候锁并没有被释放,而调用wait()将释放锁.这样另一个任务(线程)可以获得当前对象的锁,从而进入它的synchronized方法中.可以通过notify()/notifyAll(),或者时间到期,从wait()中恢复执行. 只能在同步控制方法或同步块中调用wait().notify()和notifyAll().如果在非同步的方法里调用这些方法,在
-
java向多线程中传递参数的三种方法详细介绍
在传统的同步开发模式下,当我们调用一个函数时,通过这个函数的参数将数据传入,并通过这个函数的返回值来返回最终的计算结果.但在多线程的异步开发模式下,数据的传递和返回和同步开发模式有很大的区别.由于线程的运行和结束是不可预料的,因此,在传递和返回数据时就无法象函数一样通过函数参数和return语句来返回数据.本文就以上原因介绍了几种用于向线程传递数据的方法,在下一篇文章中将介绍从线程中返回数据的方法. 欲先取之,必先予之.一般在使用线程时都需要有一些初始化数据,然后线程利用这些数据进行加工处理,并
-
详解Java多线程编程中线程的启动、中断或终止操作
线程启动: 1.start() 和 run()的区别说明 start() : 它的作用是启动一个新线程,新线程会执行相应的run()方法.start()不能被重复调用. run() : run()就和普通的成员方法一样,可以被重复调用.单独调用run()的话,会在当前线程中执行run(),而并不会启动新线程! 下面以代码来进行说明. class MyThread extends Thread{ public void run(){ ... } }; MyThread mythread = new
-
C++程序中启动线程的方法
C++11 引入一个全新的线程库,包含启动和管理线程的工具,提供了同步(互斥.锁和原子变量)的方法,我将试图为你介绍这个全新的线程库. 如果你要编译本文中的代码,你至少需要一个支持 C++11 的编译器,我使用的是 GCC 4.6.1,需要使用 -c++0x 或者 -c++11 参数来启用 C++11 的支持. 启动线程 在 C++11 中启动一个线程是非常简单的,你可以使用 std:thread 来创建一个线程实例,创建完会自动启动,只需要给它传递一个要执行函数的指针即可,请看下面这个 Hel
-
java启动线程的3种方式对比分析
本文实例为大家分享了java启动线程的方法,供大家参考,具体内容如下 1.继承Thread public class java_thread extends Thread{ public static void main(String args[]) { (new java_thread()).run(); System.out.println("main thread run "); } public synchronized void run() { System.out.prin
-
java 实现线程同步的方式有哪些
什么是线程同步? 当使用多个线程来访问同一个数据时,非常容易出现线程安全问题(比如多个线程都在操作同一数据导致数据不一致),所以我们用同步机制来解决这些问题. 实现同步机制有两个方法: 1.同步代码块: synchronized(同一个数据){} 同一个数据:就是N条线程同时访问一个数据. 2. 同步方法: public synchronized 数据返回类型 方法名(){} 就是使用 synchronized 来修饰某个方法,则该方法称为同步方法.对于同步方法而言,无需显示指定同步监视器,同步
-
Python多线程编程(二):启动线程的两种方法
在Python中我们主要是通过thread和threading这两个模块来实现的,其中Python的threading模块是对thread做了一些包装的,可以更加方便的被使用,所以我们使用threading模块实现多线程编程.一般来说,使用线程有两种模式,一种是创建线程要执行的函数,把这个函数传递进Thread对象里,让它来执行:另一种是直接从Thread继承,创建一个新的class,把线程执行的代码放到这个新的 class里. 将函数传递进Thread对象 复制代码 代码如下: ''' Cr
随机推荐
- 同时安装vs2005团队开发版和sql 2005企业版的方法(downmoon原作)
- js 自动播放的实例代码
- Javascript for in的缺陷总结
- js模态对话框使用方法详解
- PHP实现文件上传下载实例
- 用javascript实现给出的盒子的序列是否可连为一矩型
- asp知识整理笔记3(问答模式)
- JavaScript30 一个月纯 JS 挑战中文指南(英文全集)
- js实现文本框中焦点在最后位置
- 删除iis gzip缓存目录达11g的解决办法
- 另类:巧用U盘制作DOS杀毒盘
- react-native fetch的具体使用方法
- C#运算符重载用法实例分析
- 利用ajax和PHP实现简单的流程管理
- 5.PHP的其他功能
- libevent库的使用方法实例
- 易语言字体设置的步骤
- Redis精确去重计数方法(咆哮位图)
- vue.js层叠轮播效果的实例代码
- python自动分箱,计算woe,iv的实例代码