JAVA线程——初识(一)

试了下两个不同方法实现线程

主线程

package Thread;

public class Test {
    public static void main(String[] args) {
        Thread thread = new TreadClass();
        Thread thread1 = new Thread(new TreadInterface());
        thread.start();
        thread1.start();
        for(int i = 0 ;i<100;i++){
            System.out.println("我是主线程");
        }

    }
}

继承Thread的线程

public class TreadClass extends Thread{
    public void run(){
        for(int i = 0 ;i<100;i++)
        System.out.println("我是继承的线程");
    }
}

实现接口的线程

public class TreadInterface implements Runnable{

    @Override
    public void run() {
        for(int i = 0 ;i<100;i++)
        System.out.println("我是实现接口的线程");
    }
}

线程的属性

编号(ID):类型:long.用于标识不同的线程。每一个线程都拥有不同的编号 只读不难写

名称(Name):类型:String。用于区分不同的线程。通常是Thread-线程编号。读写

线程类别(Daemon):类型:boolean。值为true表示守护线程。否则表示用户线程。属性的默认值与相应的线程的父线程的该属性相同。读写

优先级(Priority):类型:int.本质是给线程调度器提示哪些线程应该优先。Java中定义了1-10的10个优先级,默认是5.

注意:ID可能销毁后容易被后续的线程继用所以不适合当作唯一编号。一般优先级默认即可。不恰当的可能导致严重的问题(可能会导致某些线程永远得不到运行)

 

守护线程和用户线程

这个大佬讲了很多 https://blog.csdn.net/lc1010078424/article/details/79613348

 

常用方法

static Thread

currentThead()

返回当前线程,即是当前代码的执行线程(对象) 同一段代码的调用返回值可能是不同的对象
void run() 用于实现线程的任务处理逻辑 该方法一般是Java虚拟机直接调用
void start() 启动相应线程 该方法返回不代表线程已经启动了。一个Thread实例的start的方法只能够被调用一次,多次会异常
void join() 等待相应的线程运行结果 若线程A调用线程B的join方法,那么线程A的运行会被暂停,直到B线程运行结束
static void yield() 使当前线程主动放弃对处理器的占用,可能导致当前线程被暂停 这个方法是不可靠的,该方法被调用时当前的线程可能仍然被运行
static void sleep(long millis) 使当前线程休眠(暂停运行)指定时间  

猜你喜欢

转载自blog.csdn.net/qq_40632760/article/details/86323657