java学习之多线程

1.java中Thread类代表一个线程,两种创建线程的方法:
1)创建Thread的子类,重写run方法;需要调用线程的start()方法启动线程;
2)创建Runnable接口的实现类,实现接口中的run方法;

一般推荐使用第二种方法实现多线程,原因是,首先能够实现多线程资源的共享;另外实现多线程的子类可以继承其他父类
2.String threadName= Thread.currentThread().getName():获取当前执行线程的名字;


3.实现Runnable接口的方式:
3.1:首先创建实现runnable接口的实现类:必须实现run方法
3.2 创建3.1对应的 Runnable接口的实现类对象;
3.3:创建Thread对象,利用Thread(Runnable target)构造器创建
3.4 调用Thread类start()方法启动线程


4.线程生命周期相关的几个方法:
4.1 yield()方法,若当前线程调用该方法,线程由执行状态变为可运行状态

4.2sleep(int min)休眠,使当前线程休眠一段时间()以毫秒为单位
4.3 join()方法,在一个线程中调用另外的线程方法,将使当前线程阻塞,等待另一个线程执行完后,再进入可执行状态

4.4 interrupt()方法,将解除线程的阻塞状态

已经结束的线程再次调用start方法,会抛出异常

4.6 isAlive()方法判断线程是否活着(可运行状态或运行状态)


5.线程安全的问题:
5.1理解并编写出线程不安全的实例代码:多个线程访问一个共享的资源
5.2使用synchronized 代码块解决线程安全的问题:需要在synchronized代码块中
参照共同的一个对象

6.关于线程间的通信:
6.1:相关方法:wait(),notify(),notifyAll()
6.2这些方法在同步方法中调用(synchronized)
//如何使用两个线程交叉打印a到c,要实现交替效果??

原文地址:https://www.cnblogs.com/zhangshitong/p/4954819.html