`
javacto
  • 浏览: 85606 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Thread(上) 【015】

阅读更多
//、、、、、创建线程的方法一、、、、、、、、、、、、、、、、、、、\\

package com.testthread;

public class TestThread2 {
	public static void main(String args[]) {
		Runner2 r = new Runner2() ;
		r.start() ;
		for(int i=0; i<100; i++) {
			System.out.println("Main thread:-----" + i) ;
		}
    }
}
class Runner2 extends Thread { //通过继承Thread 类创建线程
	public void run() {
		for(int i=0; i<30; i++)  {
			System.out.println("Runner2:--" + i) ;
		}
	}
}


//、、、、、创建线程的方法二、、、、、、、、、、、、、、、、、、、\\
package com.testthread; //默认导入java.lang包
public class TestThread1 {  
	public static void main(String args[]) {
		Runner1 r = new Runner1() ; 
		Thread th = new Thread(r) ;
		th.start(); //线程启动
		r.run();  //这个是方法调用,不能使新线程启动
		
		for(int i=0; i<100; i++) {
			System.out.println("Main thread:-----" +i) ;
		}
	}
}
class Runner1 implements Runnable {  // 通过实现runnable接口创建和启动线程,尽量使用该方法而少用(不用)继承Thread方法
	public void run() {
		for(int i=0; i<30; i++) {
			System.out.println("Runner1------"+i) ;
		}
	}
}

//。。。。。TestInterrupted。。。。。。。。。。。。。。。。。。\\
package com.testthread;
import java.util.* ;
public class TestInterrupted {
	public static void main(String args[]) {
		Thread th = new Thread(new MyThread()) ;
		th.start();
		try {
			Thread.sleep(10000) ;  //该sleep 是让Main 线程休眠10秒,让th 线程工作
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		th.interrupt();  //中断线程,MyThread 里的catch
	}
}
class MyThread implements Runnable {
	public void run() {
		while(true) {
			System.out.println("===" + new Date() +"===") ; //输出系统时间,输出十次,因为main休眠10秒
			try {
				Thread.sleep(1000); // sleep 是static 属性,可以直接调用。让该线程休眠1秒
			} catch (InterruptedException e) {
				return; // 当休眠被打断时停止
			}
		}
	}
}


//。。。。。TestJoin。。。。。。。。。。。。。。。。。。\\
package com.testthread;

public class TestJoin {
	public static void main(String[] args) {
		MyThread1 m = new MyThread1("New") ;
		m.start();
		try {
			m.join(); //等待m线程终止才继续往下进行,和调用run方法结果一样
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		
		for(int i=1; i<=10; i++) {
			System.out.println("This is main thread.") ;
		}
	}
}
class MyThread1 extends Thread {
	MyThread1(String s) {
		super(s) ; //调用Thread中的构造方法
	}
	
	public void run() {
		for(int i=1; i<=10; i++) {
			System.out.println("This is" + getName()); //返回该线程的名称
			try {
				sleep(1000) ;
			} catch (InterruptedException e) {
				return ;
			}
		}
	}
}



//。。。。。TestPriority。。。。。。。。。。。。。。。。。。\\
package com.testthread;

public class TestPriority {
	public static void main(String args[]) {
	Thread t1 = new Thread(new MyThread3()) ;
	Thread t2 = new Thread(new MyThread4()) ;
    t1.setPriority(Thread.NORM_PRIORITY + 3) ; //Thread.NORM_PRIORITY---分配给线程的默认优先级 
    t1.start() ;
    t2.start() ;
	}
}

class MyThread3 implements Runnable {
	public void run() {
		for(int i=0; i<100; i++) {
			System.out.println("MyThread3:  " + i) ;
		}
	}
}

class MyThread4 implements Runnable {
	public void run() {
		for(int i=0; i<100; i++) {
			System.out.println("-------Mythreads4:  " + i) ;
		}
	}
}


//。。。。。TestStop。。。。。。。。。。。。。。。。。。\\

package com.testthread;

public class TestStop {
	public static void main(String args[]) {
		ThreadRun tr = new ThreadRun() ;
		Thread r = new Thread(tr);
		r.start();
		for (int i = 0; i < 1000000; i++) {
			if (i % 1000 == 0) {
				System.out.println("in thread main i=" + i);
			}
		}
		System.out.println("Thread main is over");
		 tr.shutDown() ;
		r.stop();
	}
}

class ThreadRun implements Runnable {
	private boolean flag = true;

	public void run() {
		int i = 0 ;
		while (flag = true) {
			System.out.print(" " + i++);
		}
	}
	
	public void shutDown() {
		flag = false ;
	}
}



//。。。。。TestYield。。。。。。。。。。。。。。。。。。\\

package com.testthread;
public class TestYield {
	public static void main(String args[]) {
		MyThread2 th1 = new MyThread2("th1") ;
		MyThread2 th2 = new MyThread2("th2") ;
		th1.start();
		th2.start();
	}
}

class MyThread2 extends Thread {
	 public MyThread2(String s) {
		super(s) ;
	}
	 
	 public void run() {
		 for(int i=1; i<=100; i++) {
			 System.out.println(getName()+ ": "+i) ;
			 if(i%10 == 0) {
				 yield() ; //当i值是10的倍数时候,暂停当前正在执行的线程对象,并执行其他线程
			 }
		 }
	 }
}




分享到:
评论

相关推荐

    华为大版 HG8xxx 系列光猫固件包 R013-R015-R016

    这些固件版本包括 R013、R015 和 R016,适用于不同型号的光猫,如 HG8321R、HG8245H 和 HG8242。不过,值得注意的是,并非所有 HG8321R 设备都兼容,特别是硬件版本为 9E6 的 HG8321R(小版)不适用此固件。 固件...

    CourseProject3

    可以使用以下代码将其读回R:read.table(“ output.txt”,header = TRUE)(请参阅: ://class.coursera.org/getdata-015/forum/thread?thread_id=26)原始数据有用于度量,主题,执行的活动以及度量的列名称和...

    多和编程试验-项目三

    实验项目分别涉及Intel Parallel Studio中的Parallel Amplifier和Parallel Inspector工具的使用,以及多线程编程在寻找质数任务上的实践。 实验三主要关注如何识别和优化耗时函数。在Parallel Amplifier的应用中,...

    Android 移动开发入门与进阶 源代码

    本书分为多个章节,从"ch02"到"ch015",每个章节都对应一个或多个具体的Android开发主题。这些章节涵盖了以下关键知识点: 1. **环境搭建**:讲解如何安装和配置Android Studio,这是目前最常用的Android集成开发...

    windows网络编程技术

    接着,教程会深入讲解Windows Socket API(Winsock),这是Windows平台上进行网络编程的主要接口。Winsock提供了与平台无关的网络编程接口,允许开发者使用C/C++等语言编写跨平台的网络应用程序。Winsock API包括...

    LWUIT1-2-1学习文档(中文版).pdf

    - **主线程(EDT)**: LWUIT引入了一个主线程(Event Dispatch Thread),用于处理所有事件响应和绘制请求。这样可以确保事件处理有序进行,避免线程冲突。 - **作用**: - 提高LWUIT在多线程环境下的性能。 - 确保...

    java手机归属地

    || mobile.matches("^(013|014|015|018)\\d{9}$")) { // 构建查询URL String url = "http://www.ip138.com:8080/search.asp?action=mobile&mobile=" + mobile; // 创建网络连接 URLConnection connection = ...

    深入浅出mfc简体中文版

    程式進入點 WinMain / 015 視窗類別之註冊與視窗之誕生/ 016 訊息迴路/ 018 視窗的生命㆗樞 - 視窗函式/ 019 訊息映射(Message Map)雛形/ 020 對話盒的運作/ 022 模組定義檔(.DEF) / 024 資源描述檔(.RC) / ...

    C#编程实例代码集合

    Example015-共享菜单项 Example016-动态设置窗体的光标 Example017-自己绘制菜单 Example018-向窗体的系统菜单添加菜单项 namespace Example018_向窗体的系统菜单添加菜单项 { /// /// Form1 的摘要说明。 /// ...

    JDK 1.5的泛型實現(Generics in JDK 1.5)

    JDK 1.5的泛型實現(Generics in JDK 1.5) 1 侯捷觀點 JDK 1.5的泛型實現 .......................JavaTwo 2002大會上針對泛型技術給出一個講題,...#015 } #016 ... #017 } 圖 9a / JDK1.5的 java.util.ArrayList源碼 ...

Global site tag (gtag.js) - Google Analytics