多线程 实现的两种方式
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();
}
}
当某类上已经继承了某个接口的时候 将不能再继承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();
}
}
相关文章推荐
- Java实现多线程的两种方式比较及区别
- JavaLearning:多线程的两种实现方式
- Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
- 多线程“基础篇”02之 常用的实现多线程的两种方式
- JAVA多线程实现的两种方式
- Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
- Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
- Java多线程系列--“基础篇”02之 常用的实现多线程的两种方式
- Java中有两种实现多线程的方式以及两种方式之间的区别
- Java【多线程知识总结(5)】比较继承Thread类创建线程和实现Runnable接口创建线程这两种方式
- [置顶] Java多线程(一)——实现多线程的两种方式
- Java_基础—多线程(匿名内部类实现线程的两种方式和设置名字的方法)
- 多线程的两种实现方式
- 有两种实现多线程的方式以及两种方式之间的区别
- java多线程系类:基础篇:02常用的实现多线程的两种方式
- Java 多线程实现的两种方式
- java多线程------实现多线程两种方式
- 【Python】python 多线程两种实现方式
- 实现多线程有两种方式及其区别
- 多线程(二)实现多线程两种方式