技术贴 在就业班二阶段的课程中,我们学了很多技术,在这些技术中,我说一下多线程,因为现在很多技术都需要使用多线程实现,而且多线程的应用也是非常广泛. 首先我们要先了解多线程得定义: 1).多线程分为两点: 1.进程:指某一个程序在内存中的执行单元; 2.线程:指某一个程序的执行单元 2).如何实现多线程java为我们提供了以下两种方法: 1>.定义一个类继承Thread类,重写Thread类的 run()方法; 例如:定义一个类继承Thread类 public class MyThread extends Thread(){ public void run(){}; } 测试类 public static void main(String[] args) { MyThread t=new MyThread(); MyThread t1=new MyThread(); 调用该类的start();方法启动线程; t.start(); t1.start(); } 2>.1.定义一个类,实现Runnable接口,重写run()方法; 2.创建实现类对象,将该对象作为Thread类对象的构造方法进行传递参数。然后调用Thread对象的start()方法开启线程; public class MyThread implements Runnable(){ public void run(){ } } 测试类 public static void main(String[] args) { MyThread t=new MyThread(); Thread t1=new Thread(t); Thread t2=new Thread(t); t1.start(); t2.start(); } 3).多线程在运行时会出现的主要问题就是线程安全问题,即并发性异常, 这时我们可以使用同步方法,来提高线程的安全性 使用方法 synchronized()提高线程的安全性; 在参数的传递上: 非静态同步方法的锁对象是this 静态同步方法锁对象是类的字节码对象 示例代码: public class MyThread implements Runnable(){ int num=100; public void run(){ while(true){ 可以使用this传递参数,谁调用就代表谁,这里的this代表的是该类的对象 synchronized(this){ if(num > 0) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + ":" +num--); } } } } } |