Thread多线程应用技术

 一 线程的状态

一般来说线程从创建到死亡,要经历一下几种状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting(等待)、waiting、消亡(dead)。

二 线程并发与并行

并发:是指两个或多个线程,在同一时间段内运行的程序。

并行:是指两个或多个线程,同时运行的程序。

三 线程构造方法

定义一个方法通过继承Runnable()接口,可以直接创建一个子线程,通过new Thread.start()方法调用传参调用。通过Thread.currentThread().getName()获取到线程的名称。注意线程名称有默认名字为Thread-0,线程名称不会重复,在获取下一个线程名字为Thread-1,在下一个Therad-2一次类推

package com.java.demo;
public class Demo {
    public static void main(String[] args) {
        //如何获取线程的名称
        System.out.println(Thread.currentThread().getName());
        /**
         * MyRunnable的默认名称Therad-0;
         *
         */
        new Thread(new MyRunnable()).start();
        new Thread(new MyRunnable()).start();
        /**
         * 还可以赋值给一个变量通过,变量进行调用
         * */
        Thread thread = new Thread(new MyRunnable());
        thread.start();
    }
}
    class MyRunnable implements Runnable{
        @Override
        public void run() {
            //获取的当前线程的名称,get和set方法进行赋值和获取
            System.out.println(Thread.currentThread().getName());
        }
    }

结果为:
main
Thread-1
Thread-2
Thread-0

 

四 线程安全定义

线程不安全定义一个卖票的方法,多个线程同时执行一个方法,比如定义三个线程,这三个线程就会同时去抢着卖票,就会造成数据丢失。

线程安全:定义一个卖票的方法,多个线程执行,只让一个线程去卖票,其余线程锁住,或者排队去执行,每次只允许一个线程去操作执行,线程安全。

保证线程安全有以下几种方法,正是我们接下来要讲的线程锁。

五 线程锁与线程安全

线程死锁synchronized关键字,显示锁 Lock 子类ReentrantLock

1.synchronized关键字 为线程死锁

意味着同步执行,两个方法就会抢着执行,谁也争不过谁,就会导致方法卡住,程序停不了,因为,两个方法在打架,谁也赢不了,一直僵持着。

解决办法:让其中一线程等待wait();二线程执行,二线程执行完毕,等待wait();告诉一线程执行notifyAll();一线程执行。  

2.通过 显示锁 Lock 子类ReentrantLock 进入方法之后 

创建锁对象

private Lock l = new ReentrantLock();

通过调用 l.lock();方法标记

将锁放开 .unlock()方法

多个线程会排队执行,线程安全

总结

1.创建线程通过new Thread ,也可以继承Runnable()接口来,创建多线程

2.多线程同时运行,需考虑线程安全问题,非常重要。

3.线程安全,可通过锁来解决

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值