java线程

public class DownLoad implements Runnable {

    private String name;

    public DownLoad(String name) {
        this.name = name;
    }

    @Override
    public void run() {
        System.out.println ("开始下载");
        for (int i = 1; i <= 100; i++) {
            System.out.println(this.name+"下载了"+i+"%");
        }
    }
}

后面使用start是启动线程是启动DownLoad的run函数里面的代码。run函数是线程代码运行块。

import down.DownLoad;
import down.sellticket.SellTicket;

public class ThreadTest {
    public static void main(String[] args) {
        /**第一种床架线程的方式*/
        //MyThread mt=new MyThread ("当幸福来敲门");MyThread mt1=new MyThread ("肖生客的救赎");
        //mt.start (); mt1.start ();

       
        /**第二种创建线程的方式   使用Runable接口的方式实现*/

        Thread th1=new Thread (new DownLoad ("线程1--肖申克的救赎"));
        Thread th2=new Thread (new DonwnLoad ("线程2--当幸福来敲门"));
        th1.start ();th2.start ();
    }
}

2.线程锁,实现多线程并发。

synchronized语法:

synchronized(锁对象){

​ //共享资源

}

这里锁对象是object. 全局数据,意味着所有线程共享一个锁。

package down.sellticket;

import java.io.Serializable;

public class SellTicket implements Runnable{
    private String name;
    private String chuangkou;
    //共享数据票100张
    static int tickets=100;
    //创建一个对象,这个对象是多线程共享的数据
    static Object obj=new Object ();


    public SellTicket(String ck,String name) {
        this.chuangkou=ck;
        this.name = name;

    }


    
    @Override
    public void run() {
        while(true){
            //线程锁,只有当每一个线程运行完后另一个线程才可以访问
            synchronized (obj) {
                if (tickets > 0) {
                    System.out.println (this.chuangkou+this.name+"已卖出"+tickets--+"张");
                }else
                    break;
            }
            try {
                //每一次卖完一张就停200毫秒
                Thread.sleep (200);
            } catch (InterruptedException e) {
                e.printStackTrace ();
            }
        }
        System.out.println (this.name+"卖完100张");
    }
}

import down.sellticket.SellTicket;

public class ThreadTest {
    public static void main(String[] args) {
 		Thread th1=new Thread (new SellTicket ("窗口1--","肖申克的救赎"));
        Thread th2=new Thread (new SellTicket ("窗口2--","肖申克的救赎"));
        Thread th3=new Thread (new SellTicket ("窗口3--","肖生客的救赎"));
        th1.start ();
        th2.start ();
        th3.start ();

    }
}

展开阅读全文

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

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读