首页编程java编程java多线程编程?java编程软件

java多线程编程?java编程软件

编程之家2026-05-241083次浏览

老铁们,大家好,相信还有很多朋友对于java多线程编程和java编程软件的相关问题不太懂,没关系,今天就由我来为大家分享分享java多线程编程以及java编程软件的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!

java多线程编程?java编程软件

求JAVA多线程编程代码

测试过了,没问题。基本思路,实例化一个桥类,谁得到桥的可用标志谁过桥。

我第一个看到这个100分的,说实话,知道你是个学生要代码而已,线程类好久没练手了,练习一下而已,否则真不会给你写代码。因为我读书的时候也发过类似的求助,知道什么感受。不懂的时候真的没办法,所以告诉你思路。

package cn.thread;

public class Through_out_bridge{

public static void main(String[] args){

Bridge b= Bridge.getInstance();//实例化桥

java多线程编程?java编程软件

//实例化左端9个人,此时所有人都不能过桥,桥的可以状态标志为不可以用

for(int i= 1; i<= 9; i++){

Thread t= new Thread(new Person(false, i, b));

t.start();

}

//实例化右端12个人,此时所有人都不能过桥,桥的可以状态标志为不可以用

java多线程编程?java编程软件

for( int i=1;i<=12;i++)

{

Thread t= new Thread(new Person(true,i,b));

t.start();

}

//桥的可用状态给左端第10个人,可以自定义给谁

b.state= true;

Thread t= new Thread(new Person(false, 10, b));

}

}

class Person implements Runnable{

public Bridge bridge;//桥

private String hand;//在桥哪一端

int No;//序号

public Person(boolean side, int i, Bridge bridge){

this.No= i;

this.bridge= bridge;

if(bridge.state)

{

System.out.println(i+"已经过桥。");

}

if(side){

this.hand= new String("右");

} else{

this.hand= new String("左");

}

}

//过桥方法

public synchronized void through() throws InterruptedException{

if(bridge.state){

System.out.println(hand+"边第"+No+"在过桥");

bridge.open( No);

} else{

bridge.lock(No);

}

}

public void run(){

try{

Thread.sleep(1000);

// System.out.println(No+hand+"边已经过桥!");

through();

} catch(InterruptedException e){

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

class Bridge{

//可用状态判断true:可用

public boolean state= false;

//自行实例化

public static Bridge getInstance(){

return new Bridge();

}

public synchronized void open(int i) throws InterruptedException{

if(state){

Thread.sleep(1000);

this.state=true;

notify();

}

}

public synchronized void lock(int i) throws InterruptedException{

if(!state){

this.state=false;

System.out.println(i+"在等待.");

wait();

}

}

}

什么是java多线程详解

线程对象是可以产生线程的对象。比如在Java平台中Thread对象,Runnable对象。线程,是指正在执行的一个指点令序列。在java平台上是指从一个线程对象的start()开始,运行run方法体中的那一段相对独立的过程。相比于多进程,多线程的优势有:

(1)进程之间不能共享数据,线程可以;

(2)系统创建进程需要为该进程重新分配系统资源,故创建线程代价比较小;

(3)Java语言内置了多线程功能支持,简化了java多线程编程。

一、创建线程和启动

(1)继承Thread类创建线程类

通过继承Thread类创建线程类的具体步骤和具体代码如下:

•定义一个继承Thread类的子类,并重写该类的run()方法;

•创建Thread子类的实例,即创建了线程对象;

•调用该线程对象的start()方法启动线程。

复制代码

class SomeThead extends Thraad{

public void run(){

//do something here

}

}

public static void main(String[] args){

SomeThread oneThread= new SomeThread();

步骤3:启动线程:

oneThread.start();

}

复制代码

(2)实现Runnable接口创建线程类

通过实现Runnable接口创建线程类的具体步骤和具体代码如下:

•定义Runnable接口的实现类,并重写该接口的run()方法;

•创建Runnable实现类的实例,并以此实例作为Thread的target对象,即该Thread对象才是真正的线程对象。

复制代码

class SomeRunnable implements Runnable{

public void run(){

//do something here

}

}

Runnable oneRunnable= new SomeRunnable();

Thread oneThread= new Thread(oneRunnable);

oneThread.start();

复制代码

(3)通过Callable和Future创建线程

通过Callable和Future创建线程的具体步骤和具体代码如下:

•创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值。

•创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值。

•使用FutureTask对象作为Thread对象的target创建并启动新线程。

•调用FutureTask对象的get()方法来获得子线程执行结束后的返回值其中,Callable接口(也只有一个方法)定义如下:

复制代码

public interface Callable{

V call() throws Exception;

}

步骤1:创建实现Callable接口的类SomeCallable(略);

步骤2:创建一个类对象:

Callable oneCallable= new SomeCallable();

步骤3:由Callable创建一个FutureTask对象:

FutureTask oneTask= new FutureTask(oneCallable);

注释: FutureTask是一个包装器,它通过接受Callable来创建,它同时实现了 Future和Runnable接口。

步骤4:由FutureTask创建一个Thread对象:

Thread oneThread= new Thread(oneTask);

步骤5:启动线程:

oneThread.start();

java多线程有几种实现方法

继承Thread类来实现多线程:

当我们自定义的类继承Thread类后,该类就为一个线程类,该类为一个独立的执行单元,线程代码必须编写在run()方法中,run方法是由Thread类定义,我们自己写的线程类必须重写run方法。

run方法中定义的代码为线程代码,但run方法不能直接调用,如果直接调用并没有开启新的线程而是将run方法交给调用的线程执行

要开启新的线程需要调用Thread类的start()方法,该方法自动开启一个新的线程并自动执行run方法中的内容

请点击输入图片描述

结果:

请点击输入图片描述

*java多线程的启动顺序不一定是线程执行的顺序,各个线程之间是抢占CPU资源执行的,所有有可能出现与启动顺序不一致的情况。

CPU的调用策略:

如何使用CPU资源是由操作系统来决定的,但操作系统只能决定CPU的使用策略不能控制实际获得CPU执行权的程序。

线程执行有两种方式:

1.抢占式:

目前PC机中使用最多的一种方式,线程抢占CPU的执行权,当一个线程抢到CPU的资源后并不是一直执行到此线程执行结束,而是执行一个时间片后让出CPU资源,此时同其他线程再次抢占CPU资源获得执行权。

2.轮循式;

每个线程执行固定的时间片后让出CPU资源,以此循环执行每个线程执行相同的时间片后让出CPU资源交给下一个线程执行。

关于本次java多线程编程和java编程软件的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

php工程师属于什么职业(IT工程师)python人狗?python人狗大战代码