线程操作范例

实例要求:

  设计一个线程操作类,要求可以产生三个线程对象,并可以分别设置三个线程的休眠时间。如下所示:

问怎么设计?

分析

  从之前学习知道,线程的实现有两种方式,一种是继承Thread类,另一种是实现Runnable接口。而且类中应保存线程名称和休眠时间属性。

1,通过Thread类实现。

  在Thread类中直接存在name属性。所以不用定义name属性,直接在子类构造方法通过super(name)方法设置即可。

class MyThread extends Thread{private int time ;    //time要自己定义public MyThread(String name,int time){super(name) ;    // 设置线程名称,因为Thread本身存在name属性,所以不用定义name属性,直接在子类构造方法通过super(name)方法设置即可this.time = time ;    // 设置休眠时间
    }public void run(){try{ Thread.sleep(this.time) ;    // 休眠指定的时间}catch(InterruptedException e){e.printStackTrace() ;    //打印错误。}System.out.println(Thread.currentThread().getName() + "线程,休眠"+ this.time + "毫秒。") ;}
};
public class ExecDemo01{public static void main(String args[]){MyThread mt1 = new MyThread("线程A",10000) ;    // 定义线程对象,指定休眠时间MyThread mt2 = new MyThread("线程B",20000) ;    // 定义线程对象,指定休眠时间MyThread mt3 = new MyThread("线程C",30000) ;    // 定义线程对象,指定休眠时间mt1.start() ;    // 启动线程mt2.start() ;    // 启动线程mt3.start() ;    // 启动线程
    }
};

运行结果:

一个个休眠多少秒后一个个执行线程。

线程A线程,休眠10000毫秒。
线程B线程,休眠20000毫秒。
线程C线程,休眠30000毫秒。

2,使用Runnable接口实现。

  则类中是没有name属性的,所以应该单独建立一个name属性,以保存线程的名称。

  

class MyThread implements Runnable{private String name ;private int time ;public MyThread(String name,int time){this.name = name ;    // 设置线程名称this.time = time ;    // 设置休眠时间
    }public void run(){try{  Thread.sleep(this.time) ;    // 休眠指定的时间}catch(InterruptedException e){e.printStackTrace() ;}System.out.println(this.name + "线程,休眠"+ this.time + "毫秒。") ;}
};
public class ExecDemo02{public static void main(String args[]){MyThread mt1 = new MyThread("线程A",10000) ;    // 定义线程对象,指定休眠时间MyThread mt2 = new MyThread("线程B",20000) ;    // 定义线程对象,指定休眠时间MyThread mt3 = new MyThread("线程C",30000) ;    // 定义线程对象,指定休眠时间new Thread(mt1).start() ;    // 启动线程new Thread(mt2).start() ;    // 启动线程new Thread(mt3).start() ;    // 启动线程
    }
};

 

转载于:https://www.cnblogs.com/alsf/p/5672216.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256807.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习笔记(55):Python实战编程-Scrollbar

立即学习:https://edu.csdn.net/course/play/19711/343118?utm_sourceblogtoedu 1.滚动条ScrollBar: 当列表内容项的内容过多时,就需要使用到这个滚动条来进行拖动显示更多的其他选项;一般滚动条是和listbox配对使用的 2.注意事项&#xff…

【转】Unity3D研究院之使用Xamarin Studio调试Unity程序

如果你是在windows上开发,就无视这篇文章吧。 为什么要用Xamarin Studio 你可以看看我之前的文章 http://www.xuanyusong.com/archives/2683 unity4.x 和 unity5.x都可以用Xamarin Studio 来调试,亲测! 先下载插件:http://files.u…

配置SMB共享 、 配置NFS共享

虚拟机,均要检测1. Yum是否可用2. 防火墙默认区域修改为trusted3. IP地址是否配置########################################################################################################### samba 文件共享(共享文件夹) Samba 软件…

stdout标准输出、stderr标准错误输出 标准输入、标准输出、标准错误输出分别被定义为0、1、2。

$ make > compile.log 2>&1 首先将标准错误输出也重定向到标准输出中,再将标准输出重定向到 compile.log 这个文件中。这样我们就可以将所有的输出都存储到文件中了。

centos7 和centos 6的一些区别

平时的我们基本都用CentOS 6 。但是偶尔遇到的就记录下来了,与大家分享。防火墙[CentOS 6] iptables[CentOS 7] firewalld在7中开启80端口 firewall-cmd --zonepublic --add-port80/tcp --permanent #出现success表明添加成功复制代码命令含义&#xff1a…

systemverilog 起步

转一篇Systemverilog的一个牛人总结: http://blog.sina.com.cn/s/blog_5e9b181a010188re.html 1、合并数组和非合并数组 1)合并数组: 存储方式是连续的,中间没有闲置空间。 例如,32bit的寄存器,可以看成是4…

学习笔记(56):Python实战编程-Menu

立即学习:https://edu.csdn.net/course/play/19711/343119?utm_sourceblogtoedu 1.菜单menu: 1)弹出式菜单,类似与电脑桌面右击弹出的菜单成为弹出菜单; 2)窗体式菜单:类似于word上面的菜单栏 2.窗体菜单创建的步骤…

SystemCenter2012SP1实践(19)集成WSUS更新服务器2012

今天我们的任务是配置一台WSUS(Windows更新服务器),以方便后期通过"基线"与其组合,完成虚拟机的系统补丁升级。WSUS是Windows系统运维自动化的一个重要组成部分,通过它,能够节省我们很多的运维时…

像元尺寸计算

像元尺寸 X 总像素大小 感光芯片尺寸(图像区域大小)

win7右键点击文件夹进入命令窗口方法

方法一:按住shift键,鼠标右击,会出现"在此处打开命令窗口";方法二:修改注册表,为鼠标右键添加打开命令行功能;(1)将下列内容赋值到记事本中,并保存为.reg文件。Windows Re…

教你学会Linux/Unix下的vi文本编辑器

vi编辑器是Unix/Linux系统管理员必须学会使用的编辑器。看了不少关于vi的资料,终于得到这个总结。首先,记住vi编辑器的两个模式:1、命令模式2、编辑模式。在一个UNIX/Linux的shell命令或者一个以斜杠(/)、问号&#xf…

C++函数返回引用的含义

引用的意思就是说返回变量的地址而非变量本身。这样子函double数结束之后存储返回值的内存单元不会被销毁,保留了它的地址。 例如下面这个例子: int a1,b; ba; b; 这个例子里执行完之后a为1,而b为2。 但这个例子: int a1; int *b;…

LintCode: 3 Sum

C 把3个数求和&#xff0c;转变为2个数求和 1. 把数组排序 2. 注意过滤重复值 3. 从前到后遍历&#xff0c;游标i 4. 从后边数中找start &#xff0b; end &#xff1d; -arr[i]的2 sum 5. start &#xff0b; end < -arr[i], start 6. start end > -arr[i], end-- 7. s…

$* $@ $# $? $$ $! $0 $_

特殊参数&#xff1a; [xiluhuavm-xiluhua][~]$ set one two three  #使用set命令设置位置参数[xiluhuavm-xiluhua][~]$ echo $*        #打印所有位置参数 one two three[xiluhuavm-xiluhua][~]$ echo $        #打印所有位置参数 one two three[xiluhuavm-…

最优化课堂笔记03:整数规划

二、整数规划问题的求解方法&#xff1a;&#xff08;重点&#xff1a;分枝定界法&#xff09; 1.割平面法 1&#xff09;基本思想 2&#xff09;求解步骤 2&#xff09;重点&#xff1a;分枝定界法&#xff08;极大化的问题&#xff09;考试不会分很多次枝&#xff0c;用图解…

CodeIgniter 2.X 于 PHP5.6 兼容错误

本篇文章由&#xff1a;http://xinpure.com/codeigniter-2-x-to-php5-6-compatible-error/ CI 3.0 已兼容此问题 在代码迁移的过程中&#xff0c;遇到了一个 PHP 版本兼容错误 A PHP Error was encounteredSeverity: NoticeMessage: Only variable references should be return…

自动驾驶汽车定位技术

一、高精度地图 二、汽车定位技术 三、无线通信辅助汽车定位 四、视觉辅助汽车定位 五、自动驾驶高精度地图与定位实践

正整数分解为几个连续自然数之和

题目&#xff1a;输入一个正整数&#xff0c;若该数能用几个连续正整数之和表示&#xff0c;则输出所有可能的正整数序列。 一个正整数有可能可以被表示为n(n>2)个连续正整数之和&#xff0c;如&#xff1a; 1512345 15456 1578 有些数可以写成连续N&#xff08;>1&#…

egret3D与2D混合开发,画布尺寸不一致的问题

egret3d的GUI目前还没有&#xff0c;在做3d游戏的时候没有UI可用&#xff0c;只能使用egret2d的EUI组件库&#xff0c;egret3d与egret2d混合开发&#xff0c;canvas3d的大小与位置与canvas2d并没有重合&#xff0c;导致适配ui时总是错位。在做手机屏幕适配的时候必须解决这种问…

最优化作业讲解01:标准化线性规划(LP)

1.1、错误点&#xff1a;求得了目标函数最优解&#xff0c;但是没有将结果返回去最大值 2.4、错误点&#xff1a;x2变量的处理上&#xff0c;x2不是任意变量不可以按照任意变量来进行变换 x6 x2 5&#xff0c;且x6>0 2.9、 易错点&#xff1a; 1&#xff09;基变量要满足…