线程的状态以及相关的操作方法

线程的状态:创建线程Thread name =  new Thread()  就绪状态  运行状态  堵塞状态  死亡状态

线程的操作:1。在Thread类中可以通过getName()和setName()方法设置线程的名称,尽量避免名称的重复出现。要是在线程的操作过程中没有给线程一个名称,则在系统使用时会为线程分配一个名称,Thread-XX。并在其中Thread类中存在一个static属性。

 1 package Rubbableclass;
 2 class MyThread implements Runnable{
 3
 4     @Override
 5     public void run() {
 6         // TODO 自动生成的方法存根
 7         for(int i = 0;i<3;i++){
 8             System.out.println(Thread.currentThread().getName()+"运行,i = "+i);
 9             //public static Thread currentThread()返回对当前正在执行的线程对象的引用。
10             //    返回:当前执行的线程。
11
12         }
13
14     }
15
16 }
17 public class getNameThread {
18     public static void main(String[] args) {
19         // TODO 自动生成的方法存根
20         MyThread my = new MyThread();
21         new Thread(my).start();
22         new Thread(my, "线程-A").start();
23         new Thread(my, "线程-B").start();
24         new Thread(my).start();
25         new Thread(my).start();
26     }
27
28 }

Thread-0运行,i = 0
Thread-2运行,i = 0
Thread-1运行,i = 0
线程-A运行,i = 0
线程-B运行,i = 0
线程-A运行,i = 1
Thread-1运行,i = 1
Thread-2运行,i = 1
Thread-0运行,i = 1
Thread-0运行,i = 2
Thread-2运行,i = 2
Thread-1运行,i = 2
线程-A运行,i = 2
线程-B运行,i = 1
线程-B运行,i = 2

Java至少会启动两个线程。

判断线程是否启动:

package Rubbableclass;
/*判断线程是否启动*/
class MyThread_four implements Runnable{

    @Override
    public void run() {
        // TODO 自动生成的方法存根
        for (int i = 0; i < 3; i++) {
            System.out.println(Thread.currentThread().getName()+"运行-->"+i);

        }

    }

}
public class four {

    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        MyThread_four my = new MyThread_four();
        Thread t = new Thread(my, "one");
        System.out.println("线程执行前-->"+t.isAlive());
        t.start();
        System.out.println("线程执行后-->"+t.isAlive());
    }

}

线程执行前-->false
线程执行后-->true
one运行-->0
one运行-->1
one运行-->2

主线程会比其他线程的优先级高

 1 package Rubbableclass;
 2 /*线程的强制运行*/
 3 class MyThread_five implements Runnable{
 4
 5     @Override
 6     public void run() {
 7         // TODO 自动生成的方法存根
 8         for(int i = 0;i<50;i++){
 9             System.out.println(Thread.currentThread().getName()+"运行,i = "+i);
10             //public static Thread currentThread()返回对当前正在执行的线程对象的引用。
11             //    返回:当前执行的线程。
12
13         }
14
15     }
16
17 }
18 public class five {
19
20     public static void main(String[] args) {
21         // TODO 自动生成的方法存根
22         MyThread_five my = new MyThread_five();
23         Thread t = new Thread(my);
24         t.start();
25         for(int i = 0;i<50;i++){
26             if(i>10){
27                 try {
28                     t.join();
29                 } catch (Exception e) {
30                     // TODO: handle exception
31                 }
32             }
33             System.out.println("Main 线程运行-->"+i);
34         }
35     }
36
37 }

 1 package Rubbableclass;
 2
 3 public class six {
 4     class MyThread implements Runnable{
 5
 6         @Override
 7         public void run() {
 8             // TODO 自动生成的方法存根
 9             for(int i = 5;i>0;i--){
10                 try {
11                     Thread.sleep(500);
12                     throw new Exception();
13                 } catch (Exception e) {
14                     // TODO: handle exception
15                     System.out.println(Thread.currentThread().isAlive());
16                 }finally{
17                     System.out.println(Thread.currentThread().getName()+"运行,"+i);
18                 }
19             }
20
21         }
22
23     }
24     public static void main(String[] args) {
25         // TODO 自动生成的方法存根
26         MyThread my = new six().new MyThread();
27         Thread t = new Thread(my, "线程A-");
28         t.start();
29     }
30
31 }

true
线程A-运行,5
true
线程A-运行,4
true
线程A-运行,3
true
线程A-运行,2
true
线程A-运行,1

在Java中,只要前台有一个线程在运行,则整个Java进程都不会消失,所以此时可以设置一个后台线程,这样即使Java进程结束了,此后台线程依然会继续执行。要想实现这样的操作,直接使用SetDaemom()

时间: 2024-10-12 04:51:04

线程的状态以及相关的操作方法的相关文章

OC中线程的状态相关

1.线程的状态NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];[thread start]; 2.控制线程状态 2.1>启动线程  -(void)start;   //进入就绪状态->运行状态.当线程任务执行完毕,会自动进入死亡状态2.2>阻塞(暂停)线程+(void)sleepUntilDate:(NSDate *)date+(void)sleepF

java线程的状态及操作方法

一.线程的状态 1. 新建状态 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时,它已经有了相应的内存空间和其它资源,但还处于不可运行状态.新建一个线程对象可采用线程构造方法来实现. 例如:Thread thread=new Thread(); 2. 就绪状态 新建线程对象后,调用该线程的start()方法就可以启动线程.当线程启动时,线程进入就绪状态.此时,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了运行条件. 3. 运行状态 当就绪状态的线程被调用并获得

线程的状态

线程的状态 线程被创建时,属于新建状态,调用start后进入就绪状态 就绪状态被cpu调用时,进入运行状态 运行状态在调用sleep.wait.join后会进入阻塞状态 运行状态执行完成后会进入死亡状态,这里包括正常执行完毕和异常执行完毕 运行状态在os切换时,线程会进入就绪状态 线程wait进入阻塞状态,被调用notify之后,会进入就绪状态 线程sleep进入阻塞状态,时间过后会进入就绪状态 当前线程的子线程join之后,当前线程进入阻塞状态,在子线程死亡之后,当前线程进入就绪状态 阻塞状态

【学习总结】【多线程】 安全隐患 &amp; 通讯 &amp; 线程的状态

一.多线程的安全隐患 资源共享 1块资源可能会被多个线程共享,也就是多个线程可能会访问同一块资源 比如多个线程访问同一个对象.同一个变量.同一个文件 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题 所以很自然的,当某个线程进入某个事件,处理某个事件,访问某个对象的时候,先加 “锁” 互斥锁的优缺点 优点:能有效防止因多线程抢夺资源造成的数据安全问题 缺点:需要消耗大量的CPU资源 互斥锁的使用前提:多条线程抢夺同一块资源 相关专业术语:线程同步,多条线程按顺序地执行任务 互斥锁,就

Lua中的线程和状态

1.概述 线程(thread)作为Lua中一种基本的数据类型,它代表独立的执行线程(independent threads of execution),线程类型是实现协程(coroutines)的基础,注意这里的线程类型不要与操作系统线程混淆,Lua的线程类型是Lua虚拟机实现一种数据类型. 从Lua脚本来看,一个协程就是一个线程类型,比如: local co = coroutine.create(function() print("hi") end) print(co) --outp

Java多线程编程7--拾遗增补--线程的状态(new,runnable,terminated,timed_waiting,waiting,blocked)

线程对象在不同的运行时期有不同的状态,状态信息就存在于Thread内部类的State枚举类中 public enum State { /** * new状态是线程实例化后还从未执行start()方法时的状态 */ NEW, /** * runnable状态是线程进人运行的状态 */ RUNNABLE, /** * blocked状态出现在某一个线程在等待锁的时候. */ BLOCKED, /** * waiting是线程执行了Object.wait()方法后所处的状态 */ WAITING, /

进程线程及其状态

进程线程及其状态 进程 进程的概念 进程就是执行中的程序. 进程的状态 进程有五种状态,分别是: 新建:进程正在被创建 运行:进程正在被执行 阻塞:进程等待某个事件(如I/O操作) 就绪:进程等待分配处理器 终止:进程完成执行 进程调度流程图 线程 线程的概念 线程是程序执行流的最小单元,线程早期也有轻量级进程之称.一个进程中可能包含多个线程.在系统内核层面,进程与线程并无本质的不同.进程与线程最大的不同点是资源分配. 线程与进程的比较 线程与进程都可以实现多任务. 线程是CPU调度的基本单元,

iOS开发多线程篇—线程的状态

iOS开发多线程篇—线程的状态 一.简单介绍 线程的创建: self.thread=[[NSThread alloc]initWithTarget:self selector:@selector(test) object:nil]; 说明:创建线程有多种方式,这里不做过多的介绍. 线程的开启: [self.thread start]; 线程的运行和阻塞: (1)设置线程阻塞1,阻塞2秒 [NSThread sleepForTimeInterval:2.0]; (2)第二种设置线程阻塞2,以当前时

Java 线程的状态

Java Thread的运行周期中, 有几种状态, 在 java.lang.Thread.State 中有详细定义和说明: NEW 状态是指线程刚创建, 尚未启动 RUNNABLE 状态是线程正在正常运行中, 当然可能会有某种耗时计算/IO等待的操作/CPU时间片切换等, 这个状态下发生的等待一般是其他系统资源, 而不是锁, Sleep等 BLOCKED  这个状态下, 是在多个线程有同步操作的场景, 比如正在等待另一个线程的synchronized 块的执行释放, 或者可重入的 synchro