java多线程

线程和进程:每一个java程序都是一个进程,每个进程都有自己独特的资源(即内存空间),进程之间资源不共享,所有进程都是同步操作的,进程可能需要同时进行多个操作,每一个操作可以看成一个线程,线程之间资源共享,每一个线程都是进程的组成部分,所有的线程都可以共享进程的资源。
主线程:main方法开启主线程,是不需要我们创建的线程,主线程分配的资源最多,也是用来响应用户操作的。
一般我们创建的线程都是子线程,
(子)线程的创建:
第一种方法:1.创建一个类继承Thread类型
2.复写run方法
3.在主线程处创建一个子线程的对象,来调用start方法
4.Thread.sleep(1000);进行时间间隔限制,1000表示线程每执行一次操作就暂停1秒钟。

第二种方法:1.创建一个类实现Runable方法
2.复写run方法,添加线程内容
3.启动线程

每个线程都有自己的唯一id,在线程创建的时候就被分配好的,线程运行的次序是高度不可控的线程可以使用类的属性方法
一个简单的线程调用实例:

public class MyThread extends Thread{//继承Thread方法
    private static int ticket = 23;
    private Object obj;
    public MyThreads(String name,Object obj) {
        super(name);
        this.obj=obj;
        // TODO Auto-generated constructor stub
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        super.run();
        while(true){
            synchronized (obj){
                if(ticket<23){
                    return;
                }
    System.out.println(Thread.currentThread().getName()+ticket --);
            }
        }
}
}
public class MyThread1 implements Runable{//实现Runable接口
private static int ticket = 23;
@Override
    public void run() {
        while(true){
            fun();
        }
    }

    public synchronized void fun(){
        if(ticket<0){
            return;
        }
        System.out.println(ticket--);
    }
}

调用:

public static void main(){

MyThread  m=new MyThread 
new Thread(m).start();

Object obj1 = new Object();
MyThreads ms1 = new MyThreads("1号:",obj1);  
ms1.start();

}

synchronized关键字,实现同步锁机制,一般修饰方法,类,代码块,其作用的范围是大括号{}括起来的部分,作用对象是调用该部分的对象
一个线程访问一个对象中的synchronized代码块时,其他试图访问该对象的线程将被阻塞,也就是说,当两个并发线程(thread1和thread2)访问同一个对象(syncThread)中的synchronized代码块时,在同一时刻只能有一个线程得到执行,另一个线程受阻塞,必须等待当前线程执行完这个代码块以后才能执行该代码块,两个线程互斥,只有当一个线程执行完毕,释放资源解锁之后,另一个线程才能执行并锁定该对象。

参考资料:http://blog.csdn.net/luoweifu/article/details/46613015

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值