CGB2202串讲-线程复习

1:什么是线程
线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
2:如何创建线程
1:继承Thread

package thread;

public class Demo1 {
    public static void main(String[] args) {
      Thread_s thread_s = new Thread_s();
      thread_s.start();
    }
}
//创建线程的第一种方法,继承Thread类
class Thread_s  extends  Thread{
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("hello world");
        }
    }
}

2:实现Runnable

  public static void main(String[] args) {
      Thread_s thread_s = new Thread_s();
      thread_s.start();
      Runble runble = new Runble();
      Thread  thread = new Thread(runble);
      thread.start();
    }
}
//1:匿名内部类创建线程
      new Thread(){
          @Override
          public void run() {
              System.out.println("我是"+ Thread.currentThread());
          }
      }.start();
//第二种,实现Runnable接口创建
class  Runble implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("java");
        }
    }
}

 //2:实现Runnable接口匿名内部类的创建方式
         new Thread(() -> System.out.println("我---是"+ Thread.currentThread())).start();

3:jdk1.8之后的新特性,Callable,区别上面2中创建方式-有返回值

 FutureTask task = new FutureTask(new Callable() {
            @Override
            public Object call() throws Exception {
                return 100;
            }
        });
        Thread thread1 = new Thread(task);
        thread1.start();
        Object o = task.get();
        System.out.println(o);

3:线程的运行状态
在这里插入图片描述
4:线程的常用方法
long getId() 返回该线程的标识符。
String getName() 返回该线程的名称。
int getPriority() 返回线程的优先级。
StackTraceElement[] getStackTrace() 返回一个表示该线程堆栈转储的堆栈跟踪元素数组。
Thread.State getState() 返回该线程的状态。
void interrupt() 中断线程。
static boolean interrupted()
测试当前线程是否已经中断。
boolean isAlive()
测试线程是否处于活动状态。
boolean isDaemon()
测试该线程是否为守护线程。
boolean isInterrupted()
测试线程是否已经中断。
void join()
等待该线程终止。
void join(long millis)
等待该线程终止的时间最长为 millis 毫秒。
void join(long millis, int nanos)
等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。
void run()
如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。
void setDaemon(boolean on)
将该线程标记为守护线程或用户线程。
void setName(String name)
改变线程名称,使之与参数 name 相同。
void setPriority(int newPriority)
更改线程的优先级。
static void yield()
5:线程安全问题
1:Synchronized 用于方法上,用于代码片段上(建议使用这种)
2:ThreadsLocal-实际开发中用的比较多

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值