学习笔记之多线程_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 学习笔记之多线程

学习笔记之多线程

 2016/7/23 5:33:03  u010919601  程序员俱乐部  我要评论(0)
  • 摘要:程序就是一堆指令集。进程是运行中的程序,是程序在自身地址空间中的一次执行活动,是程序独立运行的基本单位。线程是轻量级的进程,是程序执行中的一条执行路径。如何创建进程第一种:继承Thread类,重写run方法:publicclassThreadTestextendsThread{@Overridepublicvoidrun(){//TODOAuto-generatedmethodstubfor(inti=0;i<1000;i++){System.out.println(i);}}
  • 标签:笔记 学习 多线程 学习笔记 线程
程序就是一堆指令集。
进程是运行中的程序,是程序在自身地址空间中的一次执行活动,是程序独立运行的基本单位。
线程是轻量级的进程,是程序执行中的一条执行路径。




如何创建进程
第一种:继承Thread类,重写run方法:
class="java" name="code">
public class ThreadTest extends Thread{

	@Override
	public void run() {
		// TODO Auto-generated method stub
		for(int i= 0; i<1000 ;i++){
			System.out.println(i);
			
		}
	}
}

public class Test {
	public static void main(String[] args) {
		
		ThreadTest threadTest = new ThreadTest();
		//使用静态代理来实现
		new Thread(threadTest).start();
		for(int j=0; j<1000; j++){
			System.out.println("zhongwen");
		}
	}
}



第二种:实现runable接口,实现run方法
public class ThreadTest02 implements Runnable {
	@Override
	public void run() {
		for(int i= 0; i<1000 ;i++){
			System.out.println(i);	
		}
	}
}

public class Test {
	public static void main(String[] args) {
		
		ThreadTest02 threadTest02 = new ThreadTest02();
		//使用静态代理来实现
		new Thread(threadTest02).start();
		for(int j=0; j<1000; j++){
			System.out.println("zhongwen");
		}
	}
}

通过实现runable接口的方法可以避免java单继承的尴尬,但是,它也不完美,因为不能声明异常。此时可考虑callable方法。


第三种:实现callable接口,重写call方法。
实际上,要玩并发,还需要深入了解其他的类知识。




---------------------------------------------------------------------------------
关于线程的优先级:
java默认是“先到先服务”,而一般线程默认优先级为5,总范围1~10,越大优先级越高。
可以通过setPriority和getPriority获取和设置线程的优先级;
还有三个常量:MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY






----------------------------------------------------------------------------

线程的常见方法:
join()   合并线程,会造成原线程阻塞,等加进去的线程结束以后回到就绪状态







-------------------------------------------------------------------------------

线程的安全问题:
可以使用同步,他的两个前提,首先要有两个以上的线程,其次多个线程用的同一个锁。
同步解决并发问题的根本原因在于那个对象,该对象如同锁的功能。
格式:
synchronize(对象){
   需要同步的代码;
}

同步方法分为静态同步方法和非静态同步方法;
所有的非静态同步方法都用同一把锁----实例对象本身
所有的静态同步方法都用同一把锁----类对象本身

在同步中调用同步需要小心,容易发生死锁。
死锁:就是两个或者多个线程无休止地等待对方释放所占据的资源。



发表评论
用户名: 匿名