JAVA中来实现并发访问方式 二

实现Runnable接口

其实在第一种方法中:Thread也是实现了Runnable接口

public class Thread
extends Object
implements Runnable

线程是程序中执行的线程。 Java虚拟机允许应用程序同时执行多个执行线程。

每个线程都有优先权。 具有较高优先级的线程优先于优先级较低的线程执行。 每个线程可能也可能不会被标记为守护程序。 当在某个线程中运行的代码创建一个新的Thread对象时,新线程的优先级最初设置为等于创建线程的优先级,并且当且仅当创建线程是守护进程时才是守护线程。

线程1:

public class Test implements Runnable{

	@Override
	public void run() {
		//优先级:设定优先级,必须在RUN()方法的开头设置。或者生成启动前设置
		Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
		for(int i=0;i<10;i++)
		{
			System.out.println(Thread.currentThread()+":"+i);
		}
		try {
			Thread.sleep(1000);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
}

线程2:

public class Test1 implements Runnable {

	@Override
	public void run() {
		for(int i=0;i<10;i++)
		{
			System.out.println(Thread.currentThread()+":"+i);
		}	
	}
}

线程3:main方法在此只调用线程1,2;

public static void main(String[] args) {
		System.out.println(Thread.currentThread().getName());
		new Thread(new Test()).start();
		new Thread(new Test1()).start();
		}
结果:

方法详解:

Thread.sleep(100):函数在未来的1000毫秒内我不想再参与到CPU竞争。那么1000毫秒过去之后,这时候也许另外一个线程正在使用CPU,那么这时候操作系统是不会重新分配CPU的,直到那个线程挂起或结束;况且,即使这个时候恰巧轮到操作系统进行CPU 分配,那么当前线程也不一定就是总优先级最高的那个,CPU还是可能被其他线程抢占去。

加断点线程中,逐步执行不能实现多线程,因为断点干预线程抢执行资源。

线程优先级:线程的最低优先级=1;线程的默认优先级=5;线程的最高优先级=10;

:线程的级别决定那个线程先被执行,但是也不一定因为存在sleep()函数;










全部评论

相关推荐

小谷围鸡肉卷阿姨:+1,腾子投完一动不动
点赞 评论 收藏
分享
已老实求offer😫:有点像徐坤(没有冒犯的意思哈)
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务