java多线程总结多线程常用方法

1.线程的命名与取得

  • 因为线程会根据自己的情况进行资源的抢占,所以每一次的运行结果都是不相同的.如果需要区分每一个线程就必须依靠线程的名字.一般线程的名字会在线程启动之前进行定义.不建议对已经启动的线程进行更改名称,或者对不同的线程设置重名的情况

1.线程名称操作使用Thread类的如下方法.​​​​​​​

  • 构造方法: public Thrad(Runnable target , String name){};
  • 设置名字: public final void setName(String name);
  • 取的名字: public final String getName();
  • ​​​​​​​出现的问题,这些方法是属于Thread类的,如果换回线程主类(即Runnable接口的子类),线程主类里面并没有继承Thread类,如果想要取得线程名字,那么能够取得的就是当前执行本方法的线程名字.所以在Thread类里面提供了一个方法;
  • 取得当前线程对象: public static Thread currentThread();
  • Thread.currentThread().getName();获取线程名字.如果再实例化Thread类对象没有为其设置名字,那么会自动进行编号命名保证线程对象名字不重复.(直接调用run();方法会输出主线程方法名 main)
  • 主方法相对于主线程,在主方法上创建的线程实际上都可以将其表示为子线程.
  • 使用java命令去解释一个程序类的时候,对于操作系统而言,都相当于启动了一个新的进程.而main相当于新进程里的一个子线程而已.

2.每一个JVM进程启动的时候至少启动几个线程??

  • main 线程: 程序的主要执行,以及启动子线程;
  • gc 线程 : 负责垃圾收集;

2.线程的休眠

  • 休眠方法 : public static void sleep(long millis) throws InterruptedException;(打断休眠会出现中断异常InterruptedException)
  • 每一次执行到run();方法的线程对象都必须进行休眠,所以执行速度会变慢.
  • 默认情况下在休眠的时候如果设置了多个线程对象,那么所有的线程对象将一起进入run();方法.(实际是有区别,所谓一起进入是由于时间太多了所以会感觉是一起进行,正因为有这细微的先后差别有可能造成数据的错误;)

3.线程优先级

优先级是指优先级越高,越有可能先执行,在Thread类中提供了以下两个方法

  • 设置优先级: public final void setPriority(int newPriority);
  • 取得优先级: public final int getPriority();
  • 设置和取得优先级都是使用了int数据类型,对于此内容有三种取值;
  • 最高优先级: public static final int MAX_PRIORITY , 10;
  • 中等优先级: public static final int NORM_PRIORITY , 5;
  • 最低优先级:public static final int MIN_PRIORITY , 1;
  • 主线程的优先级是中等优先级.

总结:

1.Thread.currentThread 可以取得当前线程类的执行对象.

2.Thread.sleep()主要是休眠,感觉是一起休眠,实际上是有先后顺序的,

3.优先级越高的对象,越有可能先执行.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值