多线程练习:两个线程计数加一,两个线程计数减一
最近面试时遇到的一些问题,其中有道多线程的题目,感觉自己当时写的不够好,回去仔细写了一下并记录。题目如下:
创建四个线程,其中两条线程使计数加一,剩下两条线程使计数减一。
public class ThreadDemo{
public static void main(String[] args){
Data data = new Data();
Thread_01 t1 = new Thread_01(data);
Thread_01 t2 = new Thread_01(data);
Thread_02 t3 = new Thread_02(data);
Thread_02 t4 = new Thread_02(data);
t1.start();
t2.start();
t3.start();
t4.start();
}
}
class Data{
private int mCount = 0;
//线程计数加一
public void Add(){
System.out.println(Thread.currentThread().getName() + ":" + ++mCount);
}
//线程计数减一
public void Dec(){
System.out.println(Thread.currentThread().getName() + ":" + --mCount);
}
}
class Thread_01 extends Thread{
private Data data;
Thread_01(Data data){
this.data = data;
}
@Override
public void run(){
for(int i = 0;i < 10;i++){
data.Add();
}
}
}
class Thread_02 extends Thread{
private Data data;
Thread_02(Data data){
this.data = data;
}
@override
public void run(){
for(int i = 0;i < 10;i++){
data.Dec();
}
}
}
以上是使用了自定义类继承了Thread类的方法来创建线程的,重写其中的run()方法,创建线程之后,通过start()方法来调用线程。
创建多线程的几种方法
- 继承Thread类
- 继承Runnable接口
- 继承Callable接口
- 通过线程池创建