学习java随笔第十篇:java线程
线程生命周期
线程的生命周期:新建状态、准备状态、运行状态、等待/阻塞状态、死亡状态
示意图:

定义、创建及运行线程
线程:
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线程的更多相关文章
- 【JAVA并发第四篇】线程安全
1.线程安全 多个线程对同一个共享变量进行读写操作时可能产生不可预见的结果,这就是线程安全问题. 线程安全的核心点就是共享变量,只有在共享变量的情况下才会有线程安全问题.这里说的共享变量,是指多个线程 ...
- Java进阶(三十九)Java集合类的排序,查找,替换操作
Java进阶(三十九)Java集合类的排序,查找,替换操作 前言 在Java方向校招过程中,经常会遇到将输入转换为数组的情况,而我们通常使用ArrayList来表示动态数组.获取到ArrayList对 ...
- Java进阶(三十五)java int与integer的区别
Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- 【JAVA并发第三篇】线程间通信
线程间的通信 JVM在运行时会将自己管理的内存区域,划分为不同的数据区,称为运行时数据区.每个线程都有自己私有的内存空间,如下图示: Java线程按照自己虚拟机栈中的方法代码一步一步的执行下去,在这一 ...
- Java多线程系列 基础篇02 线程的创建和运行
1.线程创建的方式常用有两种 1. 继承 Thread 类创建线程 2. 实现 Runnable 接口创建线程 2.Thread 和 Runnable的区别 Thread和Runnable的相同点:都 ...
- Java多线程系列 基础篇01 线程的状态
1.进程和线程 进程: 计算机中程序关于某数据集合的一次运行活动,是计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础. 线程: 线程是进程的实例,是CPU进行资源分配和调度的最小单位,线程 ...
- 菜鸡的Java笔记 第二十八 - java 包的定义
包的主要作用以及定义 包的导入操作 系统常见的开发包 jar 程序命令 包的定义 在任何的操作系统之中都有一个统一的共识:同一个目录下不能够存在有相同的文 ...
- 学习java随笔第十一篇:java窗体程序
要开java的窗体程序,就要下载开发窗体的工具. 这里我用的是的myeclipse,可以直接在网上下载安装即可. 我用的是10.0版本的,如果需要汉化的话,可以看一下这篇文章:myeclipse.10 ...
随机推荐
- windows桌面添加右键环境
1.组合键win + R,输入regedit,回车 打开注册表编辑器 2.找到目录中[HKEY_CLASSES_ROOT\Directory\Background\shell]对其右键,新建一个项 ...
- Python爬虫处理抓取数据中文乱码问题
乱码原因:因为你的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件.但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了. ...
- Linux内核学习笔记2——Linux内核源码结构
一 内核组成部分 内核是一个操作系统的核心,主要由五个部分组成:进程调度,内存管理,虚拟文件系统,网络结构,进程间通信. 1.进程调度(SCHED) 控制进程对CPU的访问.当需要选择下一个进程运行时 ...
- 好用的ajax后台框架
dwz 简单实用的国产jquery Ui框架 http://www.j-ui.com/#_blank
- vmware 收缩硬盘大小(compat,shrink,vmware-vdiskmanager)
3.vmware-vdiskmanager 虚拟机在使用过程中,虚拟磁盘的大小会不断变大.即使你删除了磁盘中的文件,虚拟磁盘的大小仍然不会缩小.VMWare在VMWare Tools中推出了Shrin ...
- HDU 4788 Hard Disk Drive (2013成都H,水题) 进位换算
#include <stdio.h> #include <algorithm> #include <string.h> #include<cmath> ...
- Spark RDD/Core 编程 API入门系列 之rdd实战(rdd基本操作实战及transformation和action流程图)(源码)(三)
本博文的主要内容是: 1.rdd基本操作实战 2.transformation和action流程图 3.典型的transformation和action RDD有3种操作: 1. Trandform ...
- Netbeans代码配色主题大搜集
我用netbeans的原因之一就是因为其支持代码配色主题,这是个对于一个代码配色字体控来说是非常重要的一个功能.理所当然的,我也会收集各种配色主题来时常换换口味. 下面就是我目前收集的Netbeans ...
- DBA日常工作职责 - 我对DBA的七点建议
作者:eygle |English [转载时请标明出处和作者信息]|[恩墨学院 OCM培训传DBA成功之道]链接:http://www.eygle.com/archives/2009/02/sugge ...
- java 递归函数
一.递归函数,通俗的说就是函数本身自己调用自己... 如:n!=n(n-1)! 你定义函数f(n)=nf(n-1) 而f(n-1)又是这个定义的函数..这就是递归 二.为什么要用递归:递归的目 ...