线程生命周期

线程的生命周期:新建状态、准备状态、运行状态、等待/阻塞状态、死亡状态

示意图:

定义、创建及运行线程

线程:

 package threadrun;

 //定义一个实现Runnable接口的类
class Myrunable1 implements Runnable
{
public void run()
{
for(int i=0;i<=50;i++)
{
System.out.println("线程1");
}
}
}
//定义一个实现Runnable接口的类
class Myrunable2 implements Runnable
{
public void run()
{
for(int i=0;i<=50;i++)
{
System.out.println("线程2");
}
}
} public class thread1 {
public static void main(String arges[])
{
Myrunable1 m1=new Myrunable1();
Myrunable2 m2=new Myrunable2();
Thread t1=new Thread(m1);
Thread t2=new Thread(m2);
t1.start();
t2.start();
}
}

运行结果:

加一个让线程睡眠的方法

 package threadrun;

 //定义一个实现Runnable接口的类
class Myrunable1 implements Runnable
{
public void run()
{
for(int i=0;i<=4;i++)
{
try {
Thread.sleep(50);//使用sleep方法使线程进入睡眠状态50毫秒
} catch (InterruptedException e) { e.printStackTrace();
}
System.out.println("线程1");
}
}
}
//定义一个实现Runnable接口的类
class Myrunable2 implements Runnable
{
public void run()
{
for(int i=0;i<=4;i++)
{
try {
Thread.sleep(50);//使用sleep方法使线程进入睡眠状态50毫秒
} catch (InterruptedException e) { e.printStackTrace();
}
System.out.println("线程2");
}
}
} public class thread1 {
public static void main(String arges[])
{
Myrunable1 m1=new Myrunable1();
Myrunable2 m2=new Myrunable2();
Thread t1=new Thread(m1);
Thread t2=new Thread(m2);
t1.start();
t2.start();
}
}

运行结果:

设置线程优先级

 package threadrun;

 //定义一个实现Runnable接口的类
class Myrunable1 implements Runnable
{
public void run()
{
for(int i=0;i<=4;i++)
{
System.out.println("线程1");
}
}
}
//定义一个实现Runnable接口的类
class Myrunable2 implements Runnable
{
public void run()
{
for(int i=0;i<=4;i++)
{
System.out.println("线程2");
}
}
} public class thread1 {
public static void main(String arges[])
{
Myrunable1 m1=new Myrunable1();
Myrunable2 m2=new Myrunable2();
Thread t1=new Thread(m1);
Thread t2=new Thread(m2);
//设置线程优先级
t1.setPriority(Thread.MAX_PRIORITY);//最高优先级
t2.setPriority(Thread.MAX_PRIORITY);//最低优先级
t1.start();
t2.start();
}
}

线程优先级

运行结果:

package threadrun;

//定义一个实现Runnable接口的类
class Myrunable1 implements Runnable
{
public void run()
{
for(int i=0;i<=4;i++)
{
try {
Thread.sleep(50);//使用sleep方法使线程进入睡眠状态50毫秒
} catch (InterruptedException e) { e.printStackTrace();
}
System.out.println("线程1");
}
}
}
//定义一个实现Runnable接口的类
class Myrunable2 implements Runnable
{
public void run()
{
for(int i=0;i<=4;i++)
{
try {
Thread.sleep(50);//使用sleep方法使线程进入睡眠状态50毫秒
} catch (InterruptedException e) { e.printStackTrace();
}
System.out.println("线程2");
}
}
} public class thread1 {
public static void main(String arges[])
{
Myrunable1 m1=new Myrunable1();
Myrunable2 m2=new Myrunable2();
Thread t1=new Thread(m1);
Thread t2=new Thread(m2);
//设置线程优先级
t1.setPriority(Thread.MAX_PRIORITY);//最高优先级
t2.setPriority(Thread.MAX_PRIORITY);//最低优先级
t1.start();
t2.start();
}
}

带睡眠方法的线程优先级

运行结果:

学习java随笔第十篇:java线程的更多相关文章

  1. 【JAVA并发第四篇】线程安全

    1.线程安全 多个线程对同一个共享变量进行读写操作时可能产生不可预见的结果,这就是线程安全问题. 线程安全的核心点就是共享变量,只有在共享变量的情况下才会有线程安全问题.这里说的共享变量,是指多个线程 ...

  2. Java进阶(三十九)Java集合类的排序,查找,替换操作

    Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...

  3. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

  4. Java进阶(二十五)Java连接mysql数据库(底层实现)

    Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...

  5. 【JAVA并发第三篇】线程间通信

    线程间的通信 JVM在运行时会将自己管理的内存区域,划分为不同的数据区,称为运行时数据区.每个线程都有自己私有的内存空间,如下图示: Java线程按照自己虚拟机栈中的方法代码一步一步的执行下去,在这一 ...

  6. Java多线程系列 基础篇02 线程的创建和运行

    1.线程创建的方式常用有两种 1. 继承 Thread 类创建线程 2. 实现 Runnable 接口创建线程 2.Thread 和 Runnable的区别 Thread和Runnable的相同点:都 ...

  7. Java多线程系列 基础篇01 线程的状态

    1.进程和线程 进程: 计算机中程序关于某数据集合的一次运行活动,是计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程: 线程是进程的实例,是CPU进行资源分配和调度的最小单位,线程 ...

  8. 菜鸡的Java笔记 第二十八 - java 包的定义

    包的主要作用以及定义    包的导入操作    系统常见的开发包    jar 程序命令        包的定义        在任何的操作系统之中都有一个统一的共识:同一个目录下不能够存在有相同的文 ...

  9. 学习java随笔第十一篇:java窗体程序

    要开java的窗体程序,就要下载开发窗体的工具. 这里我用的是的myeclipse,可以直接在网上下载安装即可. 我用的是10.0版本的,如果需要汉化的话,可以看一下这篇文章:myeclipse.10 ...

随机推荐

  1. 矩阵, 矩阵 , Android基础控件之ImageView

    天下文章大家抄,以下所有内容,有来自copy,有来自查询,亦有自己的总结(目的是总结出自己的东西),所以说原创,不合适,说是转载也不恰当,所以我称之为笔记,可惜没有此分类选项,姑且不要脸一点,选择为原 ...

  2. 【HDOJ】1978 How many ways

    DFS. #include <stdio.h> #include <string.h> #define MAXNUM 105 int map[MAXNUM][MAXNUM], ...

  3. windows桌面添加右键环境

    1.组合键win + R,输入regedit,回车   打开注册表编辑器 2.找到目录中[HKEY_CLASSES_ROOT\Directory\Background\shell]对其右键,新建一个项 ...

  4. 【转】 Android快速开发系列 10个常用工具类 -- 不错

    原文网址:http://blog.csdn.net/lmj623565791/article/details/38965311 转载请标明出处:http://blog.csdn.net/lmj6235 ...

  5. 【Android 开源】:最火的Android开源项目 第01期

    GitHub在中国的火爆程度无需多言,越来越多的开源项目迁移到GitHub平台上.更何况,基于不要重复造轮子的原则,了解当下比较流行的Android与iOS开源项目很是必要.利用这些项目,有时能够让你 ...

  6. centOS 下解压 rar zip 文件

    闲话不说,centos上如何安装rar.unrar在线解压缩软件呢?如果您的centos是32位的,执行如下命令: wget http://www.rarsoft.com/rar/rarlinux-3 ...

  7. JavaScript高级程序设计34.pdf

    元素大小 偏移量 offsetHeight:元素在垂直空间上占用的大小,以像素计.包括元素的高度.(可见的)水平滚动条的高度.上边框高度和下边框高度. offsetWidth:元素在水平空间上占用的大 ...

  8. Linux I2C设备驱动编写(三)-实例分析AM3359

    TI-AM3359 I2C适配器实例分析 I2C Spec简述 特性: 兼容飞利浦I2C 2.1版本规格 支持标准模式(100K bits/s)和快速模式(400K bits/s) 多路接收.发送模式 ...

  9. 《使用wxWidgets进行跨平台程序开发》chap09——布局一个对话框

    ///////////////////////////////////////////////////////////////////////////// // Name: personalrecor ...

  10. 云之讯融合通讯开放平台_提供融合语音,短信,VoIP,视频和IM等通讯API及SDK。

    云之讯融合通讯开放平台_提供融合语音,短信,VoIP,视频和IM等通讯API及SDK. undefined 全明星之极验证 - SendCloud undefined [转载]国内外几个主流的在线开发 ...