您的位置:首页 > 其它

多线程 实现的两种方式

2017-07-29 00:00 162 查看
摘要: 方式一:继承 Thread 接口
当某类上已经继承了某个接口的时候 将不能再继承Thread类了

方式二:(推荐)实现runnable接口

方式一:继承 Thread 接口

1. 效果



2.代码



继承Thread类的类代码

package cn.ma.thread01;
/**
* 实现多线程的类
* 方法一:继承 Thread类
*/

public class myThread extends Thread {
@Override
public void run() {

for (int i = 0; i < 200; i++) {
System.out.println(getName()+"--"+i);
}
}
}
测试类代码

package cn.ma.thread01;
/**
* 多线程:
* 进程:就是程序
* 定义: 是在进程下面同时可以执行多条路线
* 如何实现多线程:
* 方法1: 继承Thread 类
* 方法2:实现 implements Runnable 接口
*/
public class ThreadTest {
public static void main(String[] args) {
myThread mt = new myThread();//线程1 对象
myThread mt2 = new myThread();//线程2 对象
myThread mt3 = new myThread();//线程 3 对象

// 分别调用线程1 2 3 的start方法 开启线程
mt.start();
mt2.start();
mt3.start();
mt.setName("线程一:");
mt2.setName("线程二:");
mt3.setName("线程三:");
//获取当前线程
System.err.println(Thread.currentThread().getName());
//获取当先线程级别 默认是 5
System.out.println(mt.getPriority());
System.out.println(mt2.getPriority());
System.out.println(mt3.getPriority());
// 设置 线程级别 范围在 0---10 超过报错
//mt.setPriority(11);//会报错的 java.lang.IllegalArgumentException
mt2.setPriority(1);
mt3.setPriority(6);
System.out.println("线程一级别:"+mt.getPriority());
System.out.println("线程二级别:"+mt2.getPriority());
System.out.println("线程三级别:"+mt3.getPriority());
}
}

方式二:(推荐)实现runnable接口

1.效果



2. 代码

实现Runnable接口的类代码

package cn.ma.thread02;
/**
*实现多线程 方式二 :实现 runnable接口
*
*
*
*/
public class MyThread implements Runnable{

@Override
public void run() {
for (int i = 0; i < 200; i++) {
if(Thread.currentThread().getName().equals("线程一")){
System.err.println(Thread.currentThread().getName()+"-----"+i);
}else{
System.out.println(Thread.currentThread().getName()+"-----"+i);
}

}

}

}

测试部部分代码

package cn.ma.thread02;
/**
* 测试 多线程实现方式二:
* 实现runnable接口
*
*/
public class Test {
public static void main(String[] args) {
//这里只 造一个对象 好处实现资源共享
MyThread my = new MyThread();

Thread t1 = new Thread(my);//将类对象放到 线程中
Thread t2 = new Thread(my);

//给线程起名字
t1.setName("线程一");
t2.setName("线程二");
//启动线程
t1.start();
t2.start();

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息