樱缘之梦

我的博客

线程

进程:正在运行的程序。

线程:每一个运行的程序都是一个进程,在一个进程中还可以有多个执行单元同时运行,这些执行单元可以看做是程序执行的一条条线索,被称为线程。

线程的创建

1、单线程

public class T1{

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread t=new MyThread();
      t.run();
      while(true){
    	 System.out.println("Main方法在运行");
     }
	}

	
}
class MyThread{
		public void run(){
			while(true){
				System.out.println("MyThread类的方法在运行");
			}
		}
	}

运行结果,它会进入一个死循环。

多线程(继承Thread类):

public class T1{

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread t=new MyThread();
        t.start();//开启线程
        while(true){
    	 System.out.println("Main方法在运行");
     }
	}

	
}
class MyThread extends Thread{
		public void run(){
			while(true){
				System.out.println("MyThread类的方法在运行");
			}
		}
	}
在多线程中,main()方法和MyThread类的run()方法却可以同时运行,互不影响,这正是单线程和多线程的区别。

实现Runnable接口创建多线程

     因为Java中只支持单继承,一个类一旦继承了父类就无法再继承Thread类,,为了克服这种弊端,Thread类提供了另外一个构造方法Thread(Runnable target),其中Runnable是一个接口,它只有一个run()方法,当用Runnable时,可以用run()方法,不用Thread类的run()方法。

public class T1{

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread mt=new MyThread();
		Thread t=new Thread(mt);
        t.start();//开启线程
        while(true){
    	 System.out.println("Main方法在运行");
     }
	}

	
}
class MyThread implements Runnable{
		public void run(){
			while(true){
				System.out.println("MyThread类的方法在运行");
			}
		}
	}
直接继承Thread和实现Runnable接口区别:

public class T1{

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
	 new MyThread().start();
	 new MyThread().start();
	 new MyThread().start();
	 new MyThread().start();
	}

	
}
class MyThread extends Thread{
		private int mt=100;
		public void run(){
			while(true){
				if(mt>0)
				{
					Thread th=Thread.currentThread();//获取当前线程
					String th_name=th.getName();//获取当前线程的名字
					System.out.println(th_name+"正在发售第"+mt+"张票");
				}
			}
		}
	}


public class T1{

	/**
	 * @param args
	 */
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		MyThread my=new MyThread();
	 new Thread(my,"窗口1").start();
	 new Thread(my,"窗口2").start();
	 new Thread(my,"窗口3").start();
	 new Thread(my,"窗口4").start();
	}

	
}
class MyThread implements Runnable{
		private int mt=100;
		public void run(){
			while(true){
				if(mt>0)
				{
					Thread th=Thread.currentThread();//获取当前线程
					String th_name=th.getName();//获取当前线程的名字
					System.out.println(th_name+"正在发售第"+mt+"张票");
				}
			}
		}
	}

Runnable好处:

1、适合多个相同程序代码的线程去处理同一个资源的情况,把线程同代码、数据有效的分离,很好地体现了面向对象的设计思想。

2、可以避免由于java的单继承带来的局限性。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28409193/article/details/51539762
个人分类: java
想对作者说点什么? 我来说一句

进程 线程 linux

2010年09月07日 405KB 下载

java线程java线程

2011年07月21日 1.78MB 下载

java 线程java 线程

2010年11月23日 19.58MB 下载

Java线程详解大全

2011年08月03日 234KB 下载

线程源代码线程源代码

2011年01月18日 25KB 下载

线程详解 VC++经典讲解

2010年09月05日 67KB 下载

终止线程的源代码资源

2010年07月02日 43KB 下载

线程的总结

2011年05月26日 39KB 下载

Java线程Java线程Java线程Java线程

2009年12月26日 9.98MB 下载

没有更多推荐了,返回首页

不良信息举报

线程

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭