• Tidak ada hasil yang ditemukan

Thread dan Multithreading,

N/A
N/A
Protected

Academic year: 2021

Membagikan "Thread dan Multithreading,"

Copied!
39
0
0

Teks penuh

(1)

Thread dan Multithreading, 

/O S

d

O

i il

I/O Stream, dan Operasi File

Oleh : Agus Priyanto, M.Kom

SEKOLAH TINGGI TEKNOLOGI TELEMATIKA TELKOM

(2)

Outline Materi

1

Thread dan M ltithreadin

1.

Thread dan Multithreading

2

I/O Stream

2.

I/O Stream

3

Operasi Berkas (File)

(3)

h

d d

Thread dan

M ltith

di

(4)

Konsep Thread

Thread

: sekumpulan instruksi (proses) yang 

dieksekusi secara independen

dieksekusi secara independen

Multithreading

: suatu kemampuan yang

Multithreading

: suatu kemampuan yang 

memungkinkan beberapa kumpulan instruksi

(proses) dijalankan secara bersamaan (time slicing) 

(p

) j

(

g)

(5)

Multithreading bermanfaat untuk membuat

proses

yang interaktif

misalnya pada program permainan

yang interaktif

, misalnya pada program permainan 

(game). Program tetap dapat menggerakkan 

beberapa objek sambil memberi kesempatan

p

j

p

pengguna melakukan respon melalui mouse atau

keyboard

(6)

Penggunaan Thread

1.

Membuat class yang mengimplementasi

interface Runnable dan method run()

interface Runnable dan method run()

class NamaClass implements Runnable{

public void run(){

}

... }

}

2.

Membuat class yang merupakan turunan class

Thread dan meng‐override method run()

class NamaClass extends Thread {

public void run(){

p

(){

... }

}

(7)

Method Class Thread

static Thread currentThread()

String getName()

String getName()

int getPriority()

Boolean isAlive()

void join()

void join(long millis)

id j i (l

illi )

void join(long millis)

void run()

String setName()

static void sleep(longmillis)

static void sleep(longmillis, int nanos)

id

()

void start()

(8)

class Mobil implements Runnable{ String nama; public Mobil(String id){ nama = id; }

ThreadBeraksi1.java

} public void run(){ for(int i=0;i<5; i++){ try{ Thread.currentThread().sleep(1000); }catch(InterruptedException ie){ System.out.println("Terinterupsi"); }}

System.out.println("Thread" + nama + ": Posisi " +i); }} }} public class ThreadBeraksi1{ public static void main(String[] args){ Thread m1 = new Thread(new Mobil("M‐1")); Th d 2 Th d( M bil("M 2")) Thread m2 = new Thread(new Mobil("M‐2")); m1.start(); m2.start(); } }

(9)

class Mobil extends Thread{ public Mobil(String id){ super(id); } bli id (){

ThreadBeraksi2.java

public void run(){ String nama = getName(); for(int i=0; i<5; i++){ try{y{ sleep(1000); }catch(InterruptedException ie){ System.out.println("Terinterupsi"); }} System.out.println("Thread" + nama + ": Posisi " +i); }} }} public class ThreadBeraksi2{ public static void main(String[] args){ Mobil m1 = new Mobil("M‐1"); Mobil m2 = new Mobil("M‐2"); m1.start(); m2.start(); } }

(10)

/O S

(11)

Apa Itu I/O Stream

Stream adalah 

proses membaca data dari suatu

suatu sumber (input) atau mengirimkan data ke

suatu sumber (input) atau mengirimkan data ke

suatu tujuan (output)

System.out.println() adalah contoh stream, yang

System.out.println() adalah contoh stream, yang 

berfungsi menampilkan data (informasi) ke layar

Variabel standard stream:

1.

System.in (default: keyboard)

2.

System.out (default: layar)

3

S

(d f l

l )

(12)
(13)

Jenis I/O Stream

1.

Byte Stream

ƒ

Untuk menulis atau membaca 

data biner

ƒ

InputStream

dan

OutputStream

adalah dua class 

abstrak tertinggi dari Byte Stream

abstrak tertinggi dari Byte Stream

2

Character Stream

2.

Character Stream

ƒ

Untuk menulis dan membaca

data karakter (unicode)  

ƒ

Reader

Reader

dan

dan

Writer

Writer

adalah dua class abstrak tertinggi

adalah dua class abstrak tertinggi

dari Character Stream

(14)

¾Byte Stream

Class Turunan

BufferedInputStream

BufferedOuputStream

ByteArrayInputStream

ByteArrayOuputStream

DataInputStream

DataOutputStream

FileInputStream

Fil O t

tSt

FileOutputStream

PrintStream

(15)

Method Class InputStream

int available()

void close()

void mark(int readLimit)

booleanmarkSupported()

i t

d()

int read()

int read(byte[] b)

int read(byte[] b int off int len)

int read(byte[] b, int off, int len)

void reset()

long skip(long n)

long skip(long n)

(16)

Method Class OutputStream

void close()

void flush()

id

it (b t [] b)

void write(byte[] b)

void write(byte[] b, int off, int len)

abstract void write(int b)

(17)

class InputStreamBeraksi{

Membaca Input dari Console

public static void main(String[] args) throws IOException{

byte[ ] data = new byte[10];

System.out.println("Ketik 10 buah karakter:");

y

p

(

);

System.in.read(data);

System out println("Karakter yang anda ketik adalah:");

System.out.println( Karakter yang anda ketik adalah: );

for(int i=0; i<data.length; i++){

System.out.print((char) data[i]);

}}

}

}

(18)

import java io *;

Membaca Input dari File

import java.io.*;

class FileInputStreamBeraksi{

public static void main(String[] args) {

if (args.length==0) { System.out.println("Masukkan nama file sebagai parameter!"); } byte data;

FileInputStream fin=null; try{

fi = Fil I tSt ( [0]) fin = new FileInputStream(args[0]); do{

data = (byte)fin.read();

System.out.print((char)data);y p (( ) ) }while(data!=-1);

}catch(FileNotFoundException e){

System.out.println("File: " + args[0] + "tidak ditemukan."); } h(IOE i ){

}catch(IOException e){

System.out.println("Ekspresi tidak diketahui : " + e) ; }finally{

if(fin!=null){( ){ try{ fin.close();

}catch(IOException err){ System.out.println("Ekspresi tidak diketahui : " + err);} }}}}

(19)

Menulis Output ke Console

class OutputStreamBeraksi{

public static void main(String[] args) throws IOException{

p

byte[] data = {'a','b','c','d','e','f','g'};

System.out.write(data,3,4);

System.out.write('\n');

System.out.write(data);

}

}}

(20)

Menulis Output ke File

class FileOutputStreamBeraksi{

public static void main (String[] args) {

if (args.length==0) {System.out.println("Error: tulis nama file!");} byte data;

byte data;

OutputStream fout=null; try{

fout = new FileOutputStream(args[0]);

System out println ("Ketik data yang ingin Anda tulis ke file Q untuk berhenti"); System.out.println ( Ketik data yang ingin Anda tulis ke file. Q untuk berhenti ); data = (byte)System.in.read(); while(data!=(byte)'Q') { fout.write(data); d t (b t )S t i d() data = (byte)System.in.read(); } }catch(FileNotFoundException e) {

System.out.println("file : " + args[0] + " tidak dapat dibuka atau dibuat."); }catch(IOException e) {

System.out.println("Ekspresi tidak diketahui : " + e); }finally {

if(fout!=null) { try{ fout.close();

}catch(IOException err) { System.out.println("Ekspresi tidak diketahui : " + err); }}}}}

(21)

Program Copy Isi File (Byte)

public class CopyBytes {

public static void main(String[] args) throws IOException {

FileInputStream in = null; FileOutputStream out = null;

p

p

try {

in = new FileInputStream("filesumber.txt");

out = new FileOutputStream("filetujuan.txt");

int c;

while ((c = in.read()) != ‐1) {

out.write(c); }

} finally {

if (in != null) {

l

() }

in.close(); }

if (out != null) {

out.close(); }

}}

}

}

(22)
(23)

Character Stream

Class Character Stream

BufferedReader

FileReader

BufferedReader

FileReader

BufferedWrite

FileWriter

CharArrayReader

PrintWriter

CharArrayWriter

StringReader

InputStreamReader

StringWriter

OutputStreamWriter

OutputStreamWriter

(24)

Method Character Stream

abstract void close()

abstract void close()

void mark(int readAheadlimit

boolean markSupported()

pp

()

int read()

int read(char[] cbuf)

abstract int read(char[] cbuf, int off, int len)

void reset()

(25)

Membaca Input dari Console (Karakter)

class CharReaderBeraksi{

public static void main(String[] args) throws IOException{

char data;

String str = "";

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

S

i l ("K ik j

l h k

k

khi i d Q")

System.out.println("Ketik sejumlah karakter, akhiri dg Q");

data =(char) br.read();

while(data!='Q'){

str += data;

str += data;

data = (char) br.read();

}

System out println("Karakter yang anda ketik: " + str);

System.out.println( Karakter yang anda ketik: + str);

}

(26)

Method Class Writer

abstract void close()

abstract void flush()

id

it ( h [] b f i t ff i t l

)

void write(char[] cbuf, int off, int len)

void write(int c)

void write(String str)

void write(String str)

(27)

Menulis Output ke Console

import java.io.*;

Menulis Output ke Console

class WriterBeraksi{

public static void main(String[] args) throws IOException{

PrintWriter pw = new PrintWriter(System.out,true);

pw.println("Menulis ke console dengan karakter stream");

}}

(28)

Men lis O tp t ke File

class FileWriterBeraksi{

public static void main (String[] args) {

if (args length==0){ System out println("Error: tulis nama file!");}

Menulis Output ke File

if (args.length==0){ System.out.println( Error: tulis nama file! );} String data; FileWriter fout=null;

BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); try{

fout = new FileWriter(args[0]);

System.out.println("Ketik data ke file.Ketik BERHENTI untuk berhenti"); data = br.readLine();

while(!data.equals("BERHENTI")) {( q ( )) { fout.write (data + "\r\n"); data = br.readLine();} }catch(FileNotFoundException e) {

System out println("File : " + args[0] + " tidak dapat dibuka atau dibuat "); System.out.println( File :   + args[0] +   tidak dapat dibuka atau dibuat. ); }catch(IOException e) {

System.out.println("Ekspresi tidak diketahui : " + e); }finally {

if(fout!=null) { try{ fout.close();

}catch(IOException err) {

(29)

bli l

C

Ch

t

{

Program Copy Isi File (Character)

public class CopyCharacters {

public static void main(String[] args) throws IOException {

FileReader inputStream = null; FileWriter outputStream = null;

try {

inputStream = new FileReader("filesumber.txt");

outputStream = new FileWriter("filetujuan.txt");

outputStream new FileWriter( filetujuan.txt );

int c;

while ((c = inputStream.read()) != -1) {

outputStream.write(c); }

p

( ); }

} finally {

if (inputStream != null) {

inputStream.close(); }

if (outputStream != null) {

outputStream.close();}

}

}

}

(30)

Program Copy Isi File (Line)

public class CopyLines {

public static void main(String[] args) throws IOException {

BufferedReader inputStream = null; PrintWriter outputStream = null;

try {

inputStream = new BufferedReader(new FileReader("filesumber.txt")); outputStream = new PrintWriter(new FileWriter("filetujuan txt")); outputStream = new PrintWriter(new FileWriter( filetujuan.txt )); String l; while ((l = inputStream.readLine()) != null) { outputStream.println(l); }p p ( ); } } finally { if (inputStream != null) { inputStream.close();} if (outputStream != null) { outputStream.close();} } }} }

(31)

Operasi Berkas (File) 

d

Cl

il

(32)

Class File

Class File adalah class yang mendukung berbagai

operasi yang berhubungan dengan berkas (file) dan

operasi yang berhubungan dengan berkas (file) dan

direktori(folder)

Penggunaannya misalnya untuk mengganti nama

Penggunaannya misalnya untuk mengganti nama

atau membuat file atau direktori

Konstruktor class File:

File(String nama)

File(String induk, String anak)

Fil (Fil i d k S i

k)

(33)

Method Class File

Method

abstract void close()

abstract void close()

abstract void flush()

void write(char[] cbuf, int off, int len)

(

[]

,

,

)

void write(char[] cbuf, int off, int len)

void write(String str)

(34)

public class InfoFile{

Menampilkan Atribut File

public class InfoFile{

public static void main(String[] args){

BufferedReader StreamTeks=new BufferedReader(new InputStreamReader (System.in)); System.out.println("Masukan nama file:"); String namaBerkas = "";

try {namaBerkas = StreamTeks.readLine(); }catch (IOException i){}

File berkas = new File(namaBerkas);

if (!b k i t ()){ S t t i tl ("B k i i t k d ") } if (!berkas.exists()){ System.out.println("Berkas ini tak ada");} if (berkas.isDirectory()) System.out.println("Direktori"

if (berkas.isFile()) System.out.println("Berkas biasa"); if (berkas.isHidden()) System.out.println("Tersembunyi");( ()) y p ( y ) if (berkas.canRead()) System.out.println("Bisa dibaca"); if (berkas.canWrite()) System.out.println("Bisa ditulisi"); if (berkas.canRead()) System.out.println("Bisa dibaca"); if (b k i Ab l ()) S i l (" h b l ") if (berkas.isAbsolute()) System.out.println("path absolut"); else System.out.println("path relatif");

System.out.println("Induk : " + berkas.getParent()); System.out.println("Path : " + berkas.getPath());y p ( g ());

System.out.println("Path Absolut : " + berkas.getAbsolutePath()); System.out.println("Nama : " + berkas.getName());

(35)

bli l

H

Fil {

Menghapus File

public class HapusFile{

public static void main (String[] args) {

String namaFile = "filetujuan.txt";

try

try

{

FileOutputStream berkasTem = new FileOutputStream(namaFile);

berkasTem.close();

berkasTem.close();

} catch (IOException i) {}

File berkas = new File (namaFile);

if (berkas.exists()) System.out.println("Berkas " + namaFile + " ada");

(

()) y

p

(

);

else System.out.println("Berkas " + namaFile + " sudah dihapus");

berkas.delete();

System.out.println("Setelah penghapusan....");

if (berkas.exists()) System.out.println("Berkas " + namaFile + " ada");

else System.out.println("Berkas " + namaFile + " sudah dihapus");

}

(36)

public class GantiNamaFile {

Mengganti Nama File

p

{

public static void main(String[] args) {

String namaFile = "FileBaru.txt";

try {

try {

FileOutputStream berkasTem=new FileOutputStream (namaFile);

berkasTem close()

}catch (IOException i) {}

}catch (IOException i) {}

File berkasSemula= new File(namaFile);

Fil b k B

=

Fil ("N

B

t t")

File berkasBaru = new File("NamaBaru.txt");

berkasSemula.renameTo(berkasBaru);

S

l ("N

d h d

")

System.out.println("Nama sudah diganti");

}

(37)

Membuat Directory

public class BuatDir {

public static void main(String [] args) {

y

String namaDir = "latihan";

File dir = new File (namaDir);

di

kdi ()

dir.mkdir();

}

(38)

bli l

R d

A

Fil B

k i{

Mengakses Data NonSekuensial

public class RandomAccessFileBeraksi{

public static void main(String [] args) throws IOException{

RandomAccessFile berkas = new RandomAccessFile("latihan.txt", "rw");

berkas writeBytes("ABCDEFGHIJKLMNOPQRSTUVW");

berkas.writeBytes( ABCDEFGHIJKLMNOPQRSTUVW );

char kar = ' ‘;

berkas.seek(0); System.out.println("isi berkas: ");

while(berkas.getFilePointer() < berkas.length())

while(berkas.getFilePointer()

berkas.length())

{

kar = (char) berkas.readByte(); System.out.print(kar);

}}

System.out.println();

berkas.seek(3); berkas.writeByte((int)'z');

System.out.println("Sesudah penggantian");

berkas.seek(0); System.out.println("isi berkas: ");

while (berkas.getFilePointer() < berkas.length()) {

kar = (char) berkas.readByte(); System.out.print(kar);

}

}

}

(39)

Terimakasih

Terimakasih

Terimakasih

Terimakasih

Referensi

Dokumen terkait

FileInputStream digunakan untuk membaca data dari file yang merupakan turunan langsung dari class InputStream dan FileOutputStream untuk menuliskan data ke file

Class InputStream adalah abstraksi class root untuk semua input stream byte sedangkan class OutputStream adalah class root abstraksi dari semua output stream byte...

Perhatikan bahwa menulis file dapat menyebabkan menyebabkan Exception, karena itu diperlukan penangkapan sinyal exception bila terjadi error..

Tujuan Penelitian ini adalah untuk mengetahui pengaruh jenis bahan kolektor pada alat pengering energi surya tipe rak terhadap karakteristik pengeringan irisan

Penulis juga mengucapkan terima kasih kepada seluruh tenaga pengajar Program Studi Magister (S2) Ilmu Hukum, Program Pascasarjana Universitas Udayana, khususnya

The Essex series in telecommunication and

1) Humas berperan dalam Pencitraan Universitas Sam Ratulangi Manado dimana hasil penelitian menunjukkan bahwa Humas dengan informasinya mampu memberi pengetahuan

Disamping itu, tulisan ini juga berkaitan dengan studi etnomusikologi, dimana studi etnomusikologi mengkaji musik di dalam kebudayaan dan begitu juga dengan Sumatera Incidental