Java当中的线程(二)

1.实现线程的第二种方法

提供一个实现接口Runnable的类作为线程的目标对象,在初始化一个Thread类或者Thread子类的线程对象时,把目标对象传递给这个线程实例,由该目标对象提供线程体

class RunnableImpl implements Runnable{
	public void run(){
		for(int i = 0 ; i < 100 ; i ++ ;){
			System.out.println("Runnable-->" + i);
		}
	}
}
class Test{
	public static void main (String args[]){
		//生成一个Runnable接口实现类的对象
		RunnableImpl ri = new RunnableImpl();
		//生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给Thread对象
		Thread t = new Thread();
		//通知Thread对象,执行start方法
		t.start();
	}
}

在实际开发过程中更倾向于第二种做法,因为第一种继承Thread只有一次机会,继承Thread就不可以继承其他的(单继承)

2.控制线程的常用方法

。中断线程

—— Thread.sleep(); // Thread.sleep(2000);在线程体中sleep后面要设置一个参数(2000毫秒)sleep(2000)之后还要过一小段时间才可以运行,因为线程要抢占CPU

测试:

class RunnableImpl implements Runnable{
	public void run(){
		for(int i = 0 ; i < 100 ; i ++ ;){
			System.out.println("Runnable-->" + i);
			if(i == 50){
				try{
					Thread.sleep(2000);
				}
				catch(Exception e){
					System.out.println(e);
				}

			}
		}
	}
}
class Test{
	public static void main (String args[]){
		//生成一个Runnable接口实现类的对象
		RunnableImpl ri = new RunnableImpl();
		//生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给Thread对象
		Thread t = new Thread();
		//通知Thread对象,执行start方法
		t.start();
	}
}

——Thread.yield();  // 执行到这一行自动让出CPU,然后两个线程在同时抢占CPU,有可能还是这个线程抢到CPU

。设置线程的优先级

——getPriority();

——setPriority() ;

class Test{
	public static void main (String args[]){
		//生成一个Runnable接口实现类的对象
		RunnableImpl ri = new RunnableImpl();
		//生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给Thread对象
		//线程的优先级最大是10,最小是1,可以使用Thread所提供的静态常量来设置线程的优先级;
		//<span style="color:#ff0000;">注意:线程的优先级越高,执行的概率越大(注意是概率,并不是一定先执行)</span>
		//t.setPriority(Thread.MAX_PRIORITY);//设置最大优先级
		t.setPriority(Thread.MIN_PRIORITY);//设置最小优先级
		Thread t = new Thread();
		//通知Thread对象,执行start方法
		t.start();
		System.out.println(t.getPriority());
	}
}
时间: 2024-11-17 17:13:35

Java当中的线程(二)的相关文章

Java当中的线程(二)

1. 实现线程的第二种方法 2. 控制线程的常用方法 1. 第一种方法是使用继承, 但Java只能使用一次继承, 因此下面这种方法使用的更多 1 class RunnableImpl implements Runnable{ 2 public void run(){ 3 for(int i = 0; i< 100; i++){ 4 System.out.println("Runnable--->" + i); 5 } 6 } 7 } 1 class Test{ 2 publ

Java当中的线程(三)

1. 多线程的数据安全 2. 同步线程的方法 1. 多线程的数据安全 1 class MyThread implements Runnable{ 2 int i = 100; 3 public void run(){ 4 while(true){ 5 System.out.println(Thread.currentThread().getName()+i); 6 i--; 7 Thread.yield(); 8 if(i<0){ 9 break; 10 } 11 } 12 } 13 } 1 c

Java当中的线程

1. 进程和线程 2. 多线程程序运行模式 3. 定义线程的方法 1. 进程和线程 多进程:在操作系统中能(同时)运行多个任务(程序) 多线程:在同一应用程序中有多个顺序流(同时)执行 2. 多线程程序运行模式 生成线程--->就绪状态--->运行状态--->就绪状态--->运行状态--->....--->死亡状态 3. 定义线程的方法 Java中有两个, 今天学习其中一个. 1 class FirstThread extends Thread{ //定义一个线程类,

Java中的线程(二)

Java线程的同步(七中方法): 同步方法 同步代码块 wait和notify方法 使用特殊域变量(volatile) 使用重入锁 使用ThreadLocal 使用阻塞队列BlockingQueue 使用原子变量实现线程同步AtomicInteger

23.java当中的线程

进程和线程 多线程:在操作系统中能(同时)运行多个任务(程序) 多线程:在同一应用程序中有多个顺序流(同时)执行 线程的执行过程 线程的执行过程 创建线程的方法 方法1:定义一个线程类,他继承类Thread并重写其中的方法run(),方法run(),称为线程体:由于java只支持单继承,用这种方法定义的类不能继承其他类 多线程程序运行模式及方法 定义一个类FirstThread继承Thread,之后用复写的方法,线程执行的时候,执行的是run()中的代码 生成FirstThread的对象,然后调

Java当中的线程(三)

1.多线程的数据安全 class MyThread implements Runnable{ int i = 100; public void run { while(true){ //Thread.currentThread();获取当前线程是在哪个线程当中运行 System.out.println(Thread.currentThread().getName() + i); i--; Thread.yield(); if(i < 0 ){ break; } } } } class Test{

【Android 初学】11、关于Android当中的线程(初级)

Start Android 1.回顾Java当中的线程概念 1)线程的两种实现方式 2)线程的生命周期 3)多线程同步 (多个线程访问同一个资源,在同) 2.MainThread与Worker Thread 1)UI相关的代码就是MainThread 2)其他代码就是WorkerThread(不允许操作UI,ProgressBar可以) 3)在一个应用程序当中,主线程通常用于接收用户的输入,以及将运算的结果反馈给用户(也就是主线程不能阻塞) 对于一些可能会产生阻塞的操作,必须放在Worker T

Java并发学习之二——获取和设置线程信息

本文是学习网络上的文章时的总结,感谢大家无私的分享. Thread类的对象中保存了一些属性信息能够帮助我们辨别每一个线程,知道它的一些信息 ID:每个线程的独特标示: Name:线程的名称: Priority:线程对象的优先级.优先级别在1-10之间,1是最低级,10是最高级. Status:线程状态.在java中,线程只有6种状态:new,runnable,blocked,waiting,time waiting 或terminated. 现在写一个程序,将线程的信息保存到文件中方便查看 pa

java基础学习总结——线程(二)

永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! java基础学习总结——线程(二) 一.线程的优先级别 线程优先级别的使用范例: 1 package cn.galc.test; 2 3 public class TestThread6 { 4 public static void main(String args[]) { 5 MyThread4 t4 = new MyThread4(); 6 MyThread5 t5 = new MyThread5(); 7 Thread t1