在多线程中所有的操作方法都是从Thread类开始的,所有的操作基本都在Thread类中。

第一取得线程名字

a,在Thread类中,可以通过getName()方法,获得线程的名字,可以通过setName()方法设置线程的名字

b,线程名字一般在线程启动前设置,但是也允许为已经运行的线程设置名称,允许2个Thread对象有相
同的名字,但是不推荐,你懂的!!!

c,如果程序没有为线程指定名字,则系统自动为线程分配一个名称。

    package xianchengcaozuo;  

    public class ThreadName {
public static void main(String[] args) {
Demo d1= new Demo();
Thread t1= new Thread(d1);
Thread t2= new Thread(d1,"线程A");
Thread t3= new Thread(d1,"线程B");
Thread t4= new Thread(d1);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class Demo implements Runnable{ @Override
public void run() {
// TODO Auto-generated method stub
for(int i=;i<;i++){
System.out.println(Thread.currentThread().getName()+"运行,i="+i);
} } }
Thread-0运行,i=0
Thread-0运行,i=1
Thread-0运行,i=2
线程A运行,i=0
线程A运行,i=1
线程A运行,i=2
Thread-0运行,i=3
Thread-0运行,i=4
线程A运行,i=3
线程A运行,i=4
线程B运行,i=0
线程B运行,i=1
线程B运行,i=2
线程B运行,i=3
线程B运行,i=4
Thread-1运行,i=0
Thread-1运行,i=1
Thread-1运行,i=2
Thread-1运行,i=3
Thread-1运行,i=4

没指定名字,则按编号!!

第二 获取当前线程对象currentThread()

第三判断线程是否启动成功 isAlive()

第四 强制运行线程

    package xianchengcaozuo;
/*
* 强制运行线程用join方法,期间其它线程无法运行,必须等待此线程
* 执行完后,其它线程才可以执行
*/
public class Qiangzhi {
public static void main(String[] args) {
Demo1 d1= new Demo1();
Thread t1= new Thread(d1,"线程A");
t1.start();
for(int i=0;i<50;i++){
if(i>10){
try {
t1.join();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
System.out.println("main线程运行:"+i);
} }
}
class Demo1 implements Runnable{ @Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<50;i++){
System.out.println(Thread.currentThread().getName()+"运行,i="+i);
} } }

结果:

main线程运行:0
main线程运行:1
main线程运行:2
main线程运行:3
main线程运行:4
main线程运行:5
main线程运行:6
main线程运行:7
main线程运行:8
main线程运行:9
main线程运行:10
线程A运行,i=0
线程A运行,i=1
线程A运行,i=2
线程A运行,i=3
线程A运行,i=4
线程A运行,i=5
线程A运行,i=6
线程A运行,i=7
线程A运行,i=8
线程A运行,i=9
线程A运行,i=10
线程A运行,i=11
线程A运行,i=12
线程A运行,i=13
线程A运行,i=14
线程A运行,i=15
线程A运行,i=16
线程A运行,i=17
线程A运行,i=18
线程A运行,i=19
线程A运行,i=20
线程A运行,i=21
线程A运行,i=22
线程A运行,i=23
线程A运行,i=24
线程A运行,i=25
线程A运行,i=26
线程A运行,i=27
线程A运行,i=28
线程A运行,i=29
线程A运行,i=30
线程A运行,i=31
线程A运行,i=32
线程A运行,i=33
线程A运行,i=34
线程A运行,i=35
线程A运行,i=36
线程A运行,i=37
线程A运行,i=38
线程A运行,i=39
线程A运行,i=40
线程A运行,i=41
线程A运行,i=42
线程A运行,i=43
线程A运行,i=44
线程A运行,i=45
线程A运行,i=46
线程A运行,i=47
线程A运行,i=48
线程A运行,i=49
main线程运行:11
main线程运行:12
main线程运行:13
main线程运行:14
main线程运行:15
main线程运行:16
main线程运行:17
main线程运行:18
main线程运行:19
main线程运行:20
main线程运行:21
main线程运行:22
main线程运行:23
main线程运行:24
main线程运行:25
main线程运行:26
main线程运行:27
main线程运行:28
main线程运行:29
main线程运行:30
main线程运行:31
main线程运行:32
main线程运行:33
main线程运行:34
main线程运行:35
main线程运行:36
main线程运行:37
main线程运行:38
main线程运行:39
main线程运行:40
main线程运行:41
main线程运行:42
main线程运行:43
main线程运行:44
main线程运行:45
main线程运行:46
main线程运行:47
main线程运行:48
main线程运行:49

第五 线程的休眠

    package xianchengcaozuo;  

    import java.util.Date;  

    /*
* 通过sleep方法,可以使线程暂停执行
*
*/
public class ThreadSleep {
public static void main(String[] args) {
Demo2 d1= new Demo2();
Thread t1= new Thread(d1,"线程C");
t1.start();
}
} class Demo2 implements Runnable{ @Override
public void run() { for(int i=0;i<10;i++){
try {
//此处是毫秒
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(new Date());
System.out.println(Thread.currentThread().getName()+"运行,i="+i);
}
} }
    Tue Apr 22 11:10:40 CST 2014
线程C运行,i=0
Tue Apr 22 11:10:45 CST 2014
线程C运行,i=1
Tue Apr 22 11:10:50 CST 2014
线程C运行,i=2
Tue Apr 22 11:10:55 CST 2014
线程C运行,i=3
Tue Apr 22 11:11:00 CST 2014
线程C运行,i=4

线程终止:

如果主线程是5000,那么会先run正常,在被终止

    package xianchengcaozuo;
//当一个线程运行的时候,另一个线程可以通过interrupt方法种植其线程. class MyThread09 implements Runnable {
public void run() {
System.out.println("1、进入run方法");
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(5000);
System.out.println("2、休眠已经完成");
} catch (Exception e) {
System.out.println("3、休眠被终止");
return;
}
System.out.println("4、run方法正常结束");
}
}
}
class Threadinterrupt{
public static void main(String[] args) {
MyThread09 my = new MyThread09();
Thread t = new Thread(my,"线程");
t.start();
try {
Thread.sleep(2000);
} catch (Exception e) {
}
t.interrupt();
}
}
    1、进入run方法
3、休眠被终止

线程的优先级:

    package xianchengcaozuo;  

    public class Threadjibie {
public static void main(String[] args) {
Demo5 my = new Demo5();
Thread t1 = new Thread(my,"线程A");
Thread t2 = new Thread(my,"线程B");
Thread t3 = new Thread(my,"线程C");
//设置线程优先级
t1.setPriority(Thread.MIN_PRIORITY);
t2.setPriority(Thread.NORM_PRIORITY);
t3.setPriority(Thread.MAX_PRIORITY);
t1.start();
t2.start();
t3.start();
}
}
class Demo5 implements Runnable {
public void run() {
for (int i = 0; i < 5; i++) {
try {
Thread.sleep(500);
} catch (Exception e) {
}
System.out.println(Thread.currentThread().getName() + "运行,i = " + i);
}
}
}
    线程C运行,i = 0
线程B运行,i = 0
线程A运行,i = 0
线程C运行,i = 1
线程B运行,i = 1
线程A运行,i = 1
线程C运行,i = 2
线程B运行,i = 2
线程A运行,i = 2
线程C运行,i = 3
线程B运行,i = 3
线程A运行,i = 3
线程C运行,i = 4
线程B运行,i = 4
线程A运行,i = 4

主方法的优先级是中级

线程的礼让:

    package xianchengcaozuo;
//yield(),线程礼让,将操作让给其它线程
public class ThreadLirang {
public static void main(String[] args) {
Demo6 d1= new Demo6(); Thread t1 = new Thread(d1);
Thread t2 = new Thread(d1);
t1.start();
t2.start(); }
}
class Demo6 implements Runnable{ @Override
public void run() {
// TODO Auto-generated method stub
for(int i=0;i<5;i++){
System.out.println(Thread.currentThread().getName()+"运行,i="+i);
if(i==3){
Thread.currentThread().yield();
System.out.println(Thread.currentThread().getName()+"礼让");
}
}
} }

结果: Thread-1运行,i=0
Thread-1运行,i=1
Thread-1运行,i=2
Thread-1运行,i=3
Thread-0运行,i=0
Thread-0运行,i=1
Thread-0运行,i=2
Thread-0运行,i=3
Thread-0礼让
Thread-0运行,i=4
Thread-1礼让
Thread-1运行,i=4

多线程操作的方法(sleep,)setPriority(Thread.MIN_PRIORITY);yield();的更多相关文章

  1. Thread中yield方法

    先上一段代码 public class YieldExcemple { public static void main(String[] args) { Thread threada = new Th ...

  2. (转)Thread中yield方法

    先上一段代码 public class YieldExcemple { public static void main(String[] args) { Thread threada = new Th ...

  3. Android多线程操作,as快捷键笔记

    Android studio 快捷键 cmd+p 快速查看该方法的参数定义 * * option + shift +上下 快速移动上下行 * * cmd + e 显示最近操作的文件 * * cmd + ...

  4. Java自学-多线程 常见线程方法

    Java 常见的线程方法 示例 1 : 当前线程暂停 Thread.sleep(1000); 表示当前线程暂停1000毫秒 ,其他线程不受影响 Thread.sleep(1000); 会抛出Inter ...

  5. C# winform编程中多线程操作控件方法

    private void Form1_Load(object sender, EventArgs e) { Thread newthread = new Thread(new ThreadStart( ...

  6. sqlite:多线程操作数据库“database is locked”解决方法(二)

    上一篇博客<sqlite:多线程操作数据库“database is locked”解决方法>通过注册延时函数的方法来处理数据库被锁的问题.此方法固然能解决问题,但是在多个线程向数据库写入大 ...

  7. java多线程基本概述(二)——Thread的一些方法

    在Thread类中有很多方法值得我们关注一下.下面选取几个进行范例: 1.1.isAlive()方法 java api 描述如下: public final boolean isAlive() Tes ...

  8. 创建多线程的第一种方式——创建Thread子类和重写run方法

    创建多线程的第一种方式——创建Thread子类和重写run方法: 第二种方式——实现Runnable接口,实现类传参给父类Thread类构造方法创建线程: 第一种方式创建Thread子类和重写run方 ...

  9. 2016/1/25 多线程 作业 方法一 继承Thread 方法二 实现Runnable 多线程笔记

    /* * 1,尝试定义一个继承Thread类的类,并覆盖run()方法, * 在run()方法中每隔100毫秒打印一句话.*/ package Stream; //方法一 继承Thread 实现多线程 ...

随机推荐

  1. razor视图使用三元表达式

    根据条件是否满足给input标签添加属性. <input type="radio" value="1" name="PortType" ...

  2. [android] 图片的缩放

    界面布局,线性布局,竖直排列,两个ImageView 获取到两个ImageView对象 调用BitmapFactory.decodeResource(res,id)方法,获取Bitmap对象 参数:r ...

  3. 【协议】3、HTTP 协议入门

    HTTP 协议是互联网的基础协议,也是网页开发的必备知识,最新版本 HTTP/2 更是让它成为技术热点. 本文介绍 HTTP 协议的历史演变和设计思路. 一.HTTP/0.9 HTTP 是基于 TCP ...

  4. layui 数据表格+分页+搜索+checkbox+缓存选中项数据

    在做数据表格的时候遇到了很多坑, 今天整理一下方便以后使用. 主要功能是使用数据表格, 做分页,做搜索,  还有checkbox,  支持全选. 当选中一些数据的时候, 数据切换页面数据在切换回来后, ...

  5. jQuery实例之ajax请求json数据案例

    今天有这样一个需求,点击六个大洲,出现对应的一些请求信息,展示在下面,请求请求过后,第二次点击就无需请求.如图所示:点击北美洲下面出现请求的一些数据 html代码结构: <div class=& ...

  6. JS实现抽奖(方形)

    展示: HTML: <div id="table"></div> <div id="btn"> <button onc ...

  7. mybatis学习系列三(部分)

    1 forearch_oracle下批量保存(47) oracle批量插入 不支持values(),(),()方式 1.多个insert放在begin-end里面 begin insert into ...

  8. C# 异步编程1 APM 异步程序开发

    C#已有10多年历史,单从微软2年一版的更新进度来看活力异常旺盛,C#中的异步编程也经历了多个版本的演化,从今天起着手写一个系列博文,记录一下C#中的异步编程的发展历程.广告一下:喜欢我文章的朋友,请 ...

  9. 【爬坑】DataNode 无法正常启动解决方案

    0. 说明 DataNode 无法正常启动的原因 & 解决方案 1. 原因一 在 start-all.sh 之后 DataNode 无法正常启动,单独启动也启动不了 可能的原因 多次格式化,导 ...

  10. windows任务管理器怎么知道多个IIS网站进程分别对应哪个网站

    摘要: 1.IIS网站对应的进程名一般叫w3wp.exe (windows2008系统为例,其他类似) 2.windows默认的任务管理器只能看到多个同名的进程名w3wp.exe,没法区别分别对应哪个 ...