java多线程的理解

对于多线程的理解,我从已开始听的很模糊。

线程就是一个进程里多个线程执行同一个数据的不同路径,简单来说,就是多个人在一个桌上吃同一个碗里的同一种菜,不知道这样大家能看明白不,我在理解这里的代码时,有许多困难,因为毕竟没有现实场景的辅助很难理解这些概念型性的知识,

好的,废话不多说,咋直接上代码吧!

首先先给各位上一个线程的 继承类,就继承Thread吧

/*首先咋先自定义类Mythread去继承thread类
继承之后我们让Mythread类重写thread类里的run()方法
那为什么要重写run方法呢
        原因如下:
                1.区分能够被线程执行的代码

                 2.run()方法就是被用来执行线程启动的代码
*/

package YieldsDemo;

public class MythreadTest extends Thread {
	@Override
	public void run() {
		for (int i = 1; i < 10; i++) {
//getName()获取线程默认名称
			System.out.println(getName+"------"+i);
		
		}
	}
	public static void main(String[] args) {
		//创建线程对象
		MythreadTest mt1 = new MythreadTest();
		MythreadTest mt2 = new MythreadTest();
		MythreadTest mt3 = new MythreadTest();
		
		//设置线程名称
		
		mt1.setName("张三");
		mt2.setName("李四");
		mt3.setName("王五");
		
        //启动线程
		mt1.start();
		mt2.start();
		mt3.start();
		
	}

}

再来一个Runnable吧

首先说明一点哦,Runnable是一个接口,需要实现这个类并且重写run()方法

好了,现在开始吧

public class MyRunnable implements Runnable{

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i = 0;i<300;i++){
			
			System.out.println(i);
		}
	}

}

public class MyRunnableTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//创建MyRunnable对象
		//这里其实就是将任务封装成对象
		MyRunnable mr = new MyRunnable();
		
		//创建Thread类的对象,将mr作为构造参数
		Thread t1 = new Thread(mr);
		Thread t2 = new Thread(mr);
		
		//启动线程
		t1.start();
		t2.start();
	}

}

还有一个Callable接口,这个接口需要实现Callable接口并且重写call方法

import java.util.concurrent.Callable;

public class MyCallable implements Callable {

	@Override
	public Object call() throws Exception {//相当于run方法,封装现成代码的
		// TODO Auto-generated method stub
		for(int i = 0;i<300;i++){
			System.out.println(i);
		}
		return null;
	}
}

import java.util.concurrent.FutureTask;

public class MyCallableTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//创建实现类MyCallable对象
		MyCallable mc = new MyCallable();
		
		//创建FutureTask对象
		FutureTask ft1 = new FutureTask<>(mc);
		FutureTask ft2 = new FutureTask<>(mc);
		
		//创建Thread类对象
		Thread t1 = new Thread(ft1);
		Thread t2 = new Thread(ft2);
		
		//启动线程
		t1.start();
		t2.start();
	}

}

好的今天咋就讲完了哦

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值