刷脸支付 intellij idea下载 微信小程序 centos7 vue下载 vue传值 网络营销视频教程 小程序demo源码 mysql在线测试 mac虚拟打印机 mysql建表主键自增长 kubernetes入门 mysql建表 python环境搭建 pythoninput python异常 python怎么下载安装 java正则匹配 java重写和重载 java编译环境 java开发者 linux系统安装教程图解 魔之符咒 python输入数字 ae脚本管理器 php购物车 unity3d下载 c语言编程实例 扫微信二维码诈骗原理 社区网格化管理平台 桌面数字时钟 暴力猴插件 幽灵行动多少钱 俄罗斯方块代码 小度音箱app 免费图片文字识别软件 js字符串比较 寂静城 抖音道具 php定时任务
当前位置: 首页 > 学习教程  > 编程语言

java创建多线程的几种方式

2020/10/16 18:24:47 文章标签:

提示 需要注意的是,无论用何种方式创建启动线程,都要给它一个名字,这对排错诊断系统监控有帮助,否则诊断问题时,无法直观知道某个线程的用途. 继承Thread类 MyThread类 public class MyThread extends Thread {public MyThread() {}//private String name;MyThread(String n…

提示

需要注意的是,无论用何种方式创建启动线程,都要给它一个名字,这对排错诊断系统监控有帮助,否则诊断问题时,无法直观知道某个线程的用途.

继承Thread类

MyThread类


public class MyThread extends Thread {
	public MyThread() {
	}

	//private String name;
	MyThread(String name) {
		//this.name = name;
		super(name);
	}

	@Override
	public void run() {
		for (int i = 0; i < 20; i++) {
			/**
			 * Thread.currentThread() 返回当前线程的引用
			 * this.getName()  返回当前线程的名字 外部方法怎么setName设置线程名字,内部就可以获取线程名字
			 */
			System.out.println(this.getName() + " : " + i);

		}
	}
}
public class Main {
	/**
	 * 继承方式实现线程
	 *
	 * @param args
	 */
	public static void main(String[] args) {
		MyThread myThread = new MyThread();
		myThread.setName("我是main线程");
		myThread.run();
	}
}

实现Runnable接口

MyTask

public class MyTask implements Runnable {

	@Override
	public void run() {
		for (int i = 0; i < 20; i++) {
			//获取线程名字
			System.out.println(Thread.currentThread().getName()+i);
		}
	}
}

Main方法



public class Main {
	/**
	 * 实现方式创建线程
	 */
	public static void main(String[] args) {
		MyTask myTask = new MyTask();
		Thread thread = new Thread(myTask);
		thread.setName("Runnable");// 设置名字
		String name = thread.getName(); //获取名字
		boolean interrupted = thread.isInterrupted();//如果这个线程被中断就返回true
//		thread.checkAccess();
		ClassLoader contextClassLoader = thread.getContextClassLoader();//返回此线程的上下文类加载器
		long id = thread.getId();//返回此线程的标识符
		int priority = thread.getPriority();//返回线程的优先级

		Thread.State state = thread.getState(); //返回线程的状态 , 具体的点State枚举看源码
		ThreadGroup threadGroup = thread.getThreadGroup();//返回线程组

		boolean alive = thread.isAlive(); //测试线程是否活动
		boolean daemon = thread.isDaemon(); //测试线程是否是守护线程

		thread.start();

	}
}



匿名内部类方式创建


/**
 * 匿名内部类方式创建
 */
public class Main {

	public static void main(String[] args) {

		//1.第一种方式 继承方式
		new Thread() {
			@Override
			public void run() {
				//任务代码
				for (int i = 0; i < 20; i++) {
					System.out.println(Thread.currentThread().getName() + ":" + i);
				}
			}
		}.start();

//2.第二种方式 实现方法
		new Thread(new Runnable() {
			@Override
			public void run() {
				for (int i = 0; i < 20; i++) {
					System.out.println(Thread.currentThread().getName() + ":" + i);
				}
			}
		}).start();

		//主线程代码
		for (int i = 0; i < 20; i++) {
			System.out.println(Thread.currentThread().getName() + ":" + i);
		}
	}
}




本文链接: http://www.dtmao.cc/news_show_300411.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?