一:线程简单实现的三种方
(1)第一种创建线程的方式是直接extends Thread 覆盖run()方法即可。代码如下:
public class ThreadA extends Thread {
public void run (){
super.run();
try {
Thread.sleep(500);//模拟做事情执行了500ms
}catch (interruptedException e) {
//中断故障异常
e.printStackTrace();
}
System.out.println("这是线程A");
}
}
执行线程程序如下:
public class ThreadMain {
public static void main (String[] args){
ThreadA threada = new ThreadA();
threada.start();//启动线程A
System.out.println("这是主线程“);
}
}
这种实现的方式的缺点是,一个java类智能extends 继承一个父类,有的时候不免有点尴尬,它执行的结果是:
这是主线程
这是线程A
(2)第二种实现的方式是实现Runnable接口,实现run()方法。
public class ThreadB implements Runnable {
public void run (){
try {
Thread.sleep(500);//模拟做事情执行了500ms
}catch (interruptedException e) {
//中断故障异常
e.printStackTrace();
}
System.out.println("这是线程B");
}
}
执行线程程序如下:
public class ThreadMain {
public static void main (String[] args) {
ThreadB threadb = new ThreadB();
new Thread(ThreadB); //注意启动方式与第一种方式有点不一样
System.out.println("这是主线程");
}
}
(3)第三种方式是 implements Callable,实现call()方法可以得到线程的执行结果;代码不在写。
二:什么是线程不安全
当多个线程同时操作一个数据结构的时候产生了相互修改和串行的情况,没有保证数据的一致性,我们同城称这种代码的设计为“线程不安全的”。